bsrkf
Joined 1 year ago
Joined 1 year ago
"Perhaps this explains why Odin has found such widespread usage and popularity. /s"
What an unnecessarily snark and dismissive comment to make about someone's work. - I'd say within a certain niche Odin is becoming well known and gets its use
- you do realize using an `Odin package` is putting a program into a sub-folder and that's it
- It comes with a rich stdlib + vendor libraries out of the box
- and isn't it kind of up to the creators how to design and promote their language
I'd even argue it's laudable a language doesn't promote itself as a "fixes everything use me at all costs" kind of technology. The creator himself tells people it might not be the right tool for them/their use case, encourages them to try other languages too, sometimes outright tells them Odin doesn't fit their needs and xyz would probably do better.Odin is pragmatic & opinionated in its language design and goal. Maybe the lack of a package manager is the basis for you to disregard a programming language, for plenty of others (and likely more Odin's target group) it's the least of their concerns when choosing a language.
- them breaking something
- a supply chain attack
- them making a change which breaks your program
- you having accidentally relied on a bug or an unintended behavior of their code
(which they may fix at any moment)
- many unneeded LOC in your codebase
- absolution of ownership
- relying on a dependency versus having written it yourself
- in the latter case you'll automatically take responsibility
- think much more about code's security/quality
- have the knowledge to fix it and know exactly where to
(in your 35-lines of code you yourself wrote)
- more burdensome upgrades of your software
- longer compilation speeds
- having to monitor their program
- is it abandoned, ownership transferred to dubious party
- did the maintainer have a late night drunken stupor accepting bad pull requests
- did they react to a CVE or not
- did they change the license
- do they have a license but added their own problematic paragraph
- does the program "develop badly"
(change its target scope in any problematic way)
(take on more and more bloat, more unneeded functionality)
- having worse of an overview of your total dependencies
(since they may themselves rely on further crates you don't expect)
- ...
what's the trade-off now?D's scope seems to go far beyond what your average C programmer would want in a language; "use only 15% of the language and you'll be fine" (paraphrasing: "use only the 'better-C' subset", if that is what you meant, and it does seem to be a subset of D) seems a weird proposition; it still complicates things, as in collaboration, idiomatic feel and look of code, the amount of knowledge required to be competent in the language, complexity of a compiler implementation, portability of code etc... and by that logic you'd have to prefer C++ over C as well (since a lot of C is valid C++), or prefer C plus one safety feature added over C; but the "rawness"/limited scope/small size/procedural nature of C is what's appealing for many to begin with.
I for one think that a proper C replacement (C's strength also being the simplicity in which to implement a compiler for example, being the reason it's so ubiquitous in the embedded world) will be a much more limited proposition than D is.
Edit: And having been curious, even "Better-C" still has things many C-programmers wouldn't particularly like. Going by things listed here https://en.wikipedia.org/wiki/D_(programming_language)
RAII
Full metaprogramming
Nested functions, nested structs, delegates and lambdas
Member functions, constructors, destructors, operating overloading, etc.
...
Where to draw the line will be different person to person, but D doesn't seem to be a language "in the spirit of C", or a "modern version of it", at all.Viewing it as a C++ alternative makes much more sense. A `Better-C` "limit yourself to a subset of the language" compiler flag doesn't change that much.
Haven't gotten around to trying it out, but skimmed the documents a lot at one point. Always try to keep tabs on it, doesn't get the love it should.
a) Ginger Bill (the Odin language creator, no affiliation) stated on a podcast that Odin will never have an official pkg manager, since what they're, in his opinion, mainly automating is dependency hell, and this being one of the main reasons for rising software complexity and lower software quality; see https://www.youtube.com/watch?v=fYUruq352yE&t=11m26s (timestamped to the correct position) (they mention Rust explicitly as an example)
b) another programmer rather seriously worried about software quality/complexity is Jonathan Blow, who's talk "Preventing the Collapse of Civilization" is worth watching in my opinion: https://www.youtube.com/watch?v=ZSRHeXYDLko (it's not talking about package managers specifically, but is on topic regarding software complexity/quality as a whole)
Addendum: And sorry, I feel like almost everyone knows this xkcd by now, but since no one so far seems to have posted it; "obligatory xkcd reference": https://imgs.xkcd.com/comics/dependency_2x.png
Odin is a rather simple, performant, pragmatic, procedural language, fixing especially things in C with regards to its type system and infrastructure (such as packages), adding niceties such as `defer` while being at it. I, as a C programmer, have it far higher up my list of languages to try than Zig or Rust by a rather large margin.
btw: "C alternative means a language that will last for 50 years" seems a snide that could be applied to any language less than 20 years old? I'm not sure what that's concretely meant to criticize here? Is Zig more a 50-year language than Odin, if so how? Odin is used for rather serious commercial products at JangaFX btw: https://jangafx.com/ and is quite beloved by some people using it.
"originated as a re-engineering of C++"
"influenced by Java, Python, Ruby, C#, and Eiffel"
"design by contract, ranges, built-in container iteration concepts, and type inference"
"array slicing, nested functions and lazy evaluation."
"Java-style single inheritance with interfaces and mixins"
"function overloading and operator overloading"
"supports five main programming paradigms" (including OOP)
... et cetera
Though it does support things like in-line assembly and the like, I'm sure most C programmers would pass on it, as a C-alternative, based on those factoids.Guess it makes sense; I'm self taught myself, but thought academically taught developers should have a leg up in theory and mathematics, at the same time though, at one point I considered further formal education for myself (in at least paid courses and such), I realized that I don't think there's much I can't teach myself with the resources available (which includes high quality university lectures which are available for free).
Thanks for your perspective.
Assuming it takes me X-amount of software engineering hours to produce an alpha version of a given product and now let's imagine a rented office space plus four developers; consider renting in a major US city, and paying competitive US-major-city-wages versus doing so in a significantly smaller city in Eastern Europe (Czechoslovakia, Romania, Estonia).
In both cases you could develop an English-Language version of your product for global use and you can distribute software cheaply over the internet; you'd still charge customers in the US US-prices, yet would have saved on development costs.
I'm sure this comes with its own set of difficulties, especially regarding US business customers, but initially it could be an advantage in certain scenarios.
There also seems to be a current push towards non-US (sometimes even specifically from-EU) products in tech, which might give one an interesting market position, albeit I'm lacking details here, and it's yet to pan out how viable this trend is long-term of course.
I would happily pay for software that
was high-quality
was fast
was privacy preserving
had sane defaults
had/provided reasonable support/insight
(forum and developer blog)
had a fair pricing models
(non-subscription, x-years of updates etc)
as in an e-mail client
an office suite
a scheduler
(scheduling learning, tasks, various deadlines, calendar, ...)
photo/video editor
(wouldn't need to be of the scope of a professional suite)
a browser
(earnestly, one that wasn't a mere chrome re-skin, wasn't run by a bloated paid by Google organization like Mozilla, and would take fingerprinting prevention and privacy seriously)
...
or am I underestimating the problem? How many full-time developers working how many hours, building on open-source software where sensible (as in you wouldn't hand-roll your own cryptography, networking protocol implementations, GUI libraries) would it take, for e.g. a good cross-compatible Desktop E-Mail Client? (there's little in terms of software that I hate more than Outlook)And given competitive non-US, maybe even non EU-wages for such developers, how many 'customers' with fair pricing would such a company/startup need?
You could open-source part of your stack (as in singular libraries) for exposure and good will, could maybe offer free-tiered versions, potential fair pricing models could be similar to Sublime's https://www.sublimehq.com/store/text you could build upon technologies people are exited about and willing to take pay cuts for if that's what they could work in (Odin, Zig, Rust, ...) etc...
Even considering vendor lock in, market dominance of existing solutions, the dominance of smartphones over desktops, isn't there still a viable market? Maybe what's left is even more so, given Desktop use seems (besides gamers) consist (to a significant extent) of power users, semi-professionals/professionals & businesses?
And, even though this place here is of course a highly niche bubble, the plights of modern's software lack of quality are real and I'm sure felt beyond us.
If you've ever given answers to that in another comments on HN or elsewhere, feel free to link.
Sites which do this well (just from the top of my head):
Here on red-lang.org... I can barely find a consecutive meaningful chunk of code... ?