5 ms·
before reading the article, i have to say that odin won't make it unless it will invest serious time into networking. graphics, which is where odin shines, is v
by indulona 2y ago
before reading the article, i have to say that odin won't make it unless it will invest serious time into networking. graphics, which is where odin shines, is very niche market and i bet that once JB's Jai comes to public, it might crush odin in this field by sheer persona behind the language in this specific niche. what makes or breaks language is the ecosystem and abilities to use it in various domains. today, the internet/networking moves mountains. it's where the most engineering and money is. if you cannot write fast http/rest/grpc servers with most used databases, your language will fade away into obsolescence, because it might bring nice new features, but if it cannot be used in the most popular fields, it will not make it. and odin is suffering in this aspect tremendously. it has the simple go-inspired syntax going on, but it has no oop/methods, so right there you have an obstacle for new users - it is too different from the norm. it might have great integration with various graphics libraries but it if is too different and lacks the ecosystem of libraries, package manager... there is no reason for it to exist. it also requires GIGABYTES of crap you need to download on windows in order to be able to compile a program. it also needs IDE support, mostly jetbrains, visual studio and vs code, which are the dominant IDEs today. in short, if it lacks convenience of Go or Zig, or even Rust, there really is no point in investing time into it.
PS: this is just off the cuff comment, not too thought out. also, Odin has a chance to beat Zig, due to better syntax and being essentially complete, beside having official spec. Which is not the case of Zig. Zig has traction but lacks in areas where Odin does not. So I would focus on Zig as the competitor, Rust as second. The simplified go-like syntax is one of the main selling points. But there must be more to the language.
PPS: I think the choice of ^ to handle pointers is one of the worst decision in the syntax. The * and & are the norm and should not be messed with.
- 0x0203 2y ago> it also requires GIGABYTES of crap you need to download on windows I was surprised by this since all I need on Linux is llvm and clang, but looking at the official getting started page, it does indeed say "MSVC compiler and windows SDK" are required. Is that really the only way to run it on windows, or is that just the path most familiar to a typical windows developer? I personally disagree with saying it requires IDE support. I want to write a ctags parser for it, but that's all I would ever use; as a die-hard vim user, I never liked all the language server stuff people are so reliant on these days. But if that's what people want to use, it's available for Odin as well: https://odin-lang.org/showcase/ols/ https://odin-lang.org/showcase/ols/ -or- https://github.com/DanielGavin/ols https://github.com/DanielGavin/ols
- indulona 2y agoiirc it is about 6 or 7 GB on windows that you need to install. Zig can do it in 75MB, Go i think around the same. Rust has the same problem though. As for IDE, people who use plain editors like vim, emacs... exist but their numbers are merely a statistical error compared to people that use IDEs(i am counting VS code into this category even though it's just electron). Of course we could debate what is and what is not IDE, but the point here is that we need syntax highlighting, refactoring, jumping to definitions, finding usages and other functionality that IDEs provide.
- steveklabnik 2y agoIt is the way to get the platform linker, and so if you’re using a Windows native toolchain, that’s what you have to do. IIRC there are slimmer packages to get it but you’re still talking a gigabyte, not tens of megs.
- flohofwoe 2y agoAnd not being dependent on the platform linker was a massive undertaking in Zig... I don't think many languages actually implemented their own cross-platform linker. But anyway, if you're in the Odin target audience on Windows you most likely have Visual Studio installed anyway. Also IIRC even Clang and Rust depend on the MSVC linker on Windows, Zig is really an "outlier" (in a good way) in that regard.
- flohofwoe 2y agoI can't think of any language where networking (or graphics for that matter) is built into the language. At best you get support in the standard lib, but whether things like this should go into the stdlib or 3rd party libs is a decision that isn't set in stone forever, and probably doesn't even matter if it is easy to integrate 3rd party libs into Odin projects. AFAIK Odin has the concept of vendor libraries, which live somewhere between stdlib and 3rd party - so networking could go there). Compared to Zig specifically, Odin has a couple of language features that might make it less pure from an academic language designers pov, but more convenient from the user's pov and only the last one matters for getting shit done. I wouldn't dismiss Odin only because it doesn't have features XYZ, because it does some other things very right compared to other languages. Re IDE integration, google for "Odin language server".
- knome 2y ago>I can't think of any language where networking (or graphics for that matter) is built into the language. Erlang has cluster aware message passing built in as a fundamental aspect of the language.
- lagniappe 2y agogo has both in the stdlib
- indulona 2y agothe networking does not necessarily has to be in standard library, but there has to be some "official" package/library that handles these things on a superb level and is ready to go in an instant. for odin, there is one http server in the works, and according to bil it will be the "official" package but when you look at it, it is VERY lacking in many aspects. it's more like a guy made a library that kinda works, but it's nowhere near the expected standard and performance one expects.
- baranul 2y agoThat's probably relative to the few contributors on the project. Until recently, was even worse, as was mainly a one-man show. This can be seen by checking the contribution history.
- sirwhinesalot 2y ago* for pointers was a stupid choice and there's no reason to keep it solely because people are used to it. Why not keep prefix dereference too? The syntax is attrocious but hey, C does it, so everyone else must.
- echoangle 2y agoWhat’s the problem with *? Do you just want a different symbol or an entirely different syntax?
- flohofwoe 2y agoNot the OP, but the '*' is already the common symbol for multiplication. Not much of a problem for people who are used to C syntax of course, but may be confusing to anybody else, especially in expressions which have both pointer dereference and multiplication, for instance this is entirely valid C: int a = 3 ** int_ptr; The '^' is the pointer symbol in Pascal, so it's not a new thing either, it just fell a bit out of fashion.
- Y_Y 2y agoThat's horrifying, I think I would have preferred int a = powl(3,int_ptr); edit: The parent's code does a dereference and then a multiplcation. This is because of (imho) bizarre parsing rules for a dereference asterisk. I'm saying that's so horrifying that I would be less horrified if it really was an exponent (as it might seem by mixing languages).
- echoangle 2y agoI’m not sure I understand your comment, wasn’t the point that int a = 3 ** int_ptr; Calculates 3 times (*int_ptr)?
- AlexeyBrin 2y agoIt was a confusion between ** used as the rise to power operator in languages like Fortran or Python which just validated the grandparent point of confusing syntax for people not used with C that come from other programming languages. In Python and Fortran for example: 3 ** 2 = 9
- never_inline 2y ago> by sheer persona behind the language in this specific niche. "Persona oriented development" (POP) when?
- chubot 2y agoWill Jai be public? From the outside, it seems like the creator is using it to build his own software, but doesn't have that much interest in making it public? (which is fine, but I was surprised to hear talk of its impending release)
- indulona 2y agoJB had a stream couple of weeks ago where he summarized that three things prevent the language to go public and he is working on them. hopefully next year should all be done.
- jitl 2y agoHe wants to release it once it’s features and stdlib are stable; right now there’s a few things left to change so it’s not ready for release yet.
- alpaca128 2y agoThat may not be a bad idea by itself. With Zig they told people to not use it in production as it's still unstable, but of course people proceeded to use it in production, and now there's an incentive for the developers to avoid too many breaking changes. I don't know if that actually matters, but from what I've seen Jon Blow doesn't seem like the kind of person who wants half the internet to tell him how to do things or listen to complaints about a change he made.
- striking 2y agoIt's already been a decade. Maybe someday it will happen but no sense in holding your breath. From an intellectual curiosity standpoint I don't think it actually helps to discuss Jai because it's not something we can form falsifiable theories about. For anyone not already bought in, not already in Jon's ingroup, it may as well not exist.
- eterps 2y ago> PPS: I think the choice of ^ to handle pointers is one of the worst decision in the syntax. Funny that's my favourite aspect of Odin's syntax. p: ^int Easy on the eyes. I also like the convention of the type on the left and its usage on the right: p: ^int // ^ on the left x := p^ // ^ on the right Very similar to languages of the Pascal family, but less verbose. And with structs: p^.x // not necessary p.x // this will do
- indulona 2y agothe main problem is keyboard layout and lack of easy access to ^ in most of them. not everyone uses US layout, it's actually minority of computer users. plus, the notion of whether the ^ goes before or after variable can cause a lot of programming and code reviewing issues. but it's just a personal opinion, obviously.
- fallingsquirrel 2y agoWhat layout specifically is a problem? Odin uses curly braces which (in QWERTY) are shifted and typed with your pinky—the worst possible combination. Are there layouts where ^ is worse than that?
- indulona 2y agothis could result in endless thread so all i will say is that you have * physically available as stand-alone key on the numerical side of every keyboard ever made(unless you are a weirdo(=micro minority) and use the variously mutilated physical keyboard layouts) and & is physically available as stand-alone key on iso 105 layout, for example, but most importantly it is a character widely used in most languages as actual character, whereas ^ is really not.
- fallingsquirrel 2y agoMoving your whole hand off home row to hit numpad * is even worse than shift-pinky.