I’m paraphrasing here: “There are people who haven’t used Lua for more than three hours, but still have strong opinions.” “I don’t have strong opinions a Python. I’ve only used it for about 100 hours.“ Earlier: “Haskell is useless.” Come on, you’re just trolling us now, aren’t you?
Judging from his time learning ocaml, he doesn't have the background to evaluate Haskell imho. I don't necessarily disagree with the conclusion due to the ecosystem, but Haskell as a language does have some really amazing things that would blow his mind and that more mainstream languages should have In particular I don't think prime has tried a language with Software Transactional Memory yet (i.e. like Haskell, Clojure, and pypy before the python3 schism). You just write threaded shared-memory programs without any channel or message passing boilerplate, and it just works without locks or race conditions because the language just has support for transactions and optimistic concurrency like in a SQL database.
Speaking my language. Extism is next level WASM.. making it seamless/easy to support most languages in just about any host language/platform with the bonus of sandboxed safety per module and in many causes much improved performance over host language.
@@dgo4490 Wasm's poor performance? That depends on what language you are using to write and target wasm for. Zig, Rust and C put out really good wasm code. The runtimes on various languages may not be great, but they are improving as well all the time. Took the JVM almost 2 decades to improve performance noticeably. WASM is already more performant in most runtimes. I mean I guess if you are running WASM in NodeJS and writing WASM with NodeJS.. you may have a valid point. But write some WASM in Zig or Rust or even Go if you can get past Go runtime being part of each .wasm output, and you can get some pretty good performance.
I have fond memories of Lua. My compilers class in college did a semester long assignment where we built a lexer, parser, and interpreter in Lua. That professor's unit tests, to this day, are some of the best I've ever encountered. Passing those tests was like crack.
That whole WASM talk really reminded me of the pro/con debates about targeting JVM/.NET, and how we used to have Java in the browser with Java Applets. Gives me a lot of flashbacks there with the whole "compile to WASM/JVM and run everywhere!" argument.
I agree. If you use a language that "has" it but let's you do everything else too, you never end up using the functional tools since you're always gonna want to take the easy way out. Haskell makes it sink or swim. It's hard and painful certainly for a lot of people but it also means you learn a lot more and a lot faster if you can stick it out. Edit: So, Haskell (and OCaml too actually, many FP languages) a good language for the same niches that other sort of runtimed languages (CLR .NET, JVM environment, BEAM). But each of the languages think in different ways. Some people think in a more imperative squirrely-brace way, some people like an abstract declarative way which is why Go and Elixir won't really compete with each other even though they're both for concurrent live web application servers, because they appeal to two very distinct crowds of types of developers. Go is very imperative style, Elixir is functional style. So it's also not just about the applicability niches (web servers, game development, mobile apps, real time embedded) but also the psychologies of the people who want to do those things.
@@Mth-Ryan The trick is to start with functional programming because if you with procedural languages first, it will make Haskell feel like a chore to write code for any project.
Man, I really enjoyed this video actually. Just sitting down and talking about shit, hearing Prime's crispy voice in 1.5x speed. Listening to Prime--an actual experienced developer--talk about these topics that get discussed constantly is very... refreshing? Listening to you feels worthwhile, while reading about these topics on twitter/X where everyone thinks they're the second coming of John Carmack is soul-sucking. I'm all for the reaction content (those are amazing as well) but you just can't get better than a one and one discussion with the one and the only Prime. And Rust can suck my big balding head.
Odin is great for game programming in general. Not just graphics, but whole games in Raylib and SDL are delightful to make in Odin. I tend to prefer Zig above Odin for games myself, but mostly because I vibe with Zig's comptime. I like having the choice between the two
Counter argument for narrow scoped languges: Learning a generic languge gives you a strong basis for anything you do. For instance I know a bit of elixir because I build a website with it. Now someone wants me to build a website with them. I am gona use python... ik python. For 3 years so I could build a stable python application
I agree, this is actually what I like about Rust. I like being able to only know one language and be able to manage okay in all kinds of different languages. Of course some languages are better, and should be preferable, in certain domains. Regardless, versatility is nice to have.
I think that the best is to use general purpose language that fits as DSL in a specific use case. Python is just like that. R is good but too much focused in stats and the ecosystem is only stats. Python has everything under the Sun. In astronomy people use to make custom scripting languages for data reduction packages. All suck. The altenative was IDL, a Matlab for images. People start discovering Python and now all astro is using Python as scripting language. I think that sometimes a DSL might be good, but the ecosystem is important too.
@tychoides what you are describing also happened with deep learning a few decades ago. This is why I known python in the first place. It's my second languge after java because I wanted to do ai and ai is basically just python. I do really like learning other languges but seeing python In webdev (django) a bit more in depth really changed how I see it as a whole. Like its the worst language for everything until there is tooling and packages. And then it gives you just the right amount of abstruction.
And to me it does it pretty well. I really like the simplicity of it while still having the benefits of fast compile times and an incredibly smooth experience. Really like the async await system of it too.
Odin is a pretty good low level good generally purpose language. The reason there's a lot of graphics/games dev around it is mainly because, 1) There's bindings to DX, OpenGL, Vukan, SDL2, RayLib & Metal packaged with it. And if you want to uses those with a LL language that isn't C/C++, isn't OOP & easier to learn then Rust, you've got what Zig, Odin and maybe Jai; 2) The community around Odin is still very very small. So curtain parts are going to get over enthused, to the determent of Odin. Plus the only commercial use of it is JangaFX's programs; and 3) Not gonna lie. It do be nice for graphics programming but unlike Jai it's not explicitly built for it. It's just a nice language to use. You really should try to get Bill back on & try it for a week/month. Even if that's just remaking some of your old tooling.
But it is a bad scripting language and a bad system programing language. The compilation times and jit lag is still bad enough that for short scripts python is faster (I time it from the terminal). You can precompile, but still is not good enough and quite inmature. So not good for scripts. And you don't have true compilation, so no Julia libraries that you can call. I have tried to use Julia for data science and python is comparable or faster (Polars dataframes are really good). Using vectorized operations on large datasets are not advantageous in Julia. However, Julia is excellent for simulations, specially those involving differential equations. Julia makes more sense for Neural Networks that Python, but Julia cannot make libraries or executables as C++, so all work went to Python and C++. NN frameworks in Julia exist but they cannot compete with TensorFlow and PyTorch with all the money and development behind them.
@@fastasasharkTest Python+Polars vs Dataframe.jl, Polars is much better. Also the Julia LSP takes 10-30 secs in start. Pylance is javascript and is instantaneous. If any program in javascript is faster than your chosen language, then you have issues. Python is slow, nobody fights that. But you call C/C++/Fortran/Rust libraries. And those are fast, even with Python overhead.But Julia pretends to be a full stack, but it isn't. I would not make a script in Julia. I would not make a simulation in Python, I would use Julia. I would use C++ or Rust to make libraries. Julia is a DSL, is time to accept it.
@@9s-l-s9I would like Julia to have success because it's just plain better for my use case which is mainly scientific programming So I want to crunch alot of numbers quickly. And also don't want to stay as close to my scientific notation as possible. Meaning less nested loops (which you can't avoid in Mathematical Sciences because you have indexes over which you iterate.) But I am not without criticism. The inability to compile to binary is a crucial flaw, while not for my intends I don't understand why they do not have this. Additionally I find the Julia way of doing traits very lackluster and I would like to have interfaces included. Instead of weird abstract supertyping
I use lua extensively for openresty development earlier in my career to route traffic’s dynamically down to all the microservices the company build, pretty fun language to work with.
Lua + Forth = a world conquest combo. Use Lua to generate code for a Forth system, and you have a really high-level setup that can also go really low-level. But you have to embrace some "building the language" as you go along. I'm already doing that, although I do use some Python for build stuff.
If you use wasm for rendering html, yeah then it’s not a “w”, but if you use it to do heavy and complex computations then yes, it’s great. Great examples are media editors & renderers, games, etc.
I just think creativity and doing what you are passionate about is what really kicked off software as a huge industry. When it was all science it was used for mathematics mainly, when the nerds started doing nerdy things we got home pcs and mobile phones. All that is to say, if people wanna create a backend runtime for a frontend language, I'm completely happy to see and learn about it because creativity breeds progress. I disagree with forcing specific languages only for specific tasks.
Yes, I think it makes sense to design languages for specific areas. I see Golang as being well suited for cloud/network/CLI and small GUI applications with GTK, and not much more. Zig for low-level and specially optimized tools. Odin for graphics. R for statistics. Python for machine learning and automation. JavaScript strictly for the frontend, and nothing more. That's my take on this.
You're right about this. I thought quote: "Odin provides official libraries for all major graphics APIs: OpenGL, Vulkan, Direct3D11, Direct3D12, Metal, and WebGL 1 & 2. Odin additionally brings you officially maintained bindings for popular libraries such as SDL2, GLFW, raylib, microui, miniaudio and much more, in its vendor library!" makes more sense for graphics stuff@@defeqel6537
lol my dev stack almost centers on Docker, but the whole point of the stack is to avoid actually centering on anything, so I have non-Docker ways of running the whole thing alongside the Docker way, both baked into separate automation handles. I make options for everything and depend on nothing I can avoid depending on.
0:16 "Odin is geared towards graphics" is a real misnomer about Odin that is purposefully pushed to try and give the language an identity. It does absolutely nothing special with graphics, nor have anything "built-in" to the language for graphics. The took the code from other developers bindings projects for OpenGL, GLFW, etc., and slapped them into the "vendor" directory to be available for a default install. There is no special "low-level language optimization" being don, anyone could accomplish the same by simply adding/creating these bindings themselves, as is done with literally every other language and project that uses them. It is mildly convenient to get a project up and running quickly without, but anyone who is serious about making a game are going to spend an afternoon to fine-tune some custom bindings that are purpose built for their needs.
Well, convenience matters, a lot. Also for every one "who is serious about making a game" there's about X times people, who'll just download Unity/Godot/whatever and play with it. So making something sitting in between "just download Godot binary, and you're ready to go" and "spend an afternoon to fine-tune some custom bindings" may be quite valuable.
@@JohnDoe-vb3ks If you are using Godot/Unity, then you aren't using Odin, so not sure how that is even relevant. Saving a copy/paste of a file or two one time could be classified as "convenient" in the strictest sense of the word, but let's not pretend that it is some extraordinary feature that makes an entire language geared towards a specific "graphics programming. Actual language features and syntax would be far more relevant, not a copy/paste of files to the vendors directory. I have nothing to against Odin, I merely pointed out that objectively there is nothing about it that makes it "geared towards graphics" more/less than other language, and this reputation has been artificially pushed and parroted.
@@ForeverZer0 "Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming. " is literally their definition of what the language is. I don't know how the whole "graphics programming" was purported. From what I understand, Odin was created because Ginger Bill didn't like some things in C and made a language for "the joy of programming". So I completely agree with you.
@@ForeverZer0 "artificially pushed and parroted" why do you make is sound like some conspiracy theory haha? I think a lot of it comes from the fact that is has a built in way of dealing with SoA and AoS and methods to access them in very useful ways which is a big thing in graphics and game programming (along with it just being a systems language). Also the fact that the only real production software written in Odin is graphics based (JangaFX suite).
@@ForeverZer0the joy of programming is the big one. this language has made me enjoy programming so much. I actually have been just building stuff for fun, rather than school or to get better for a job. also heavy influences from Go and Python are apparent and really do push the "just get stuff done" mentality of the language. Wish the tooling for it were better, but Windows has the best support rn.
I’m a self taught dev. I started by learning C#. Not really sure why but now I know a tiny bit and I am picking up Python super quick and it feels very easy. Can someone explain why everyone memes on C#. I’m genuinely curious, I just want to learn.
@@LilArquebus C# is a microsoft product, it was also created to be a competitor to another language. Those two reasons alone give it meme status. It's also kinda lost its place in the world. If you want speed, there are faster languages, if you want more expressive, there are better languages. The only companies who use it are in industries that move *very* slowly. Its a fine language, but a lot of the ideas aren't as common in modern development. MVC being an example, you don't see that in the react/node world. I've also personally been burned with C# + lightswitch back in the day, and so I don't trust trying their newer tech (blazor for example).
Also, I think the "one language for a specific purpose" is both a good take and also in some level bullshit (relating to the title of your video as well). It is good because specialization tends to make better tools fit to their specific purposes, it is good for organization and also allows for more conciseness in what you are trying to express with code. And it is also bullshit because learning more languages do not imply in a loss, it expands your domain over all the languages you've already learned by generalizing the knowledge, having competition is also extremely good and factually one of the most common reasons I heard from people is that they "don't want needing to learn so much" (which is lazyness³; you also don't need to learn everything, because competition exists and thus you can work with whatever you want most of the time), and also because the more specialized you are the more you lose context about the world of other things, and the more you need that 'recurrence' and fragmentation inside one workload. You can see this with people using JSON, but still inventing more and more protocols around it, or with alternative solutions to protobuf that tries to cover logic or some other bs, or even with Lua where there are like dozens of versions of it trying to generalize it for more cases or for performance-based tasks (like lua-jit or Luau [the roblox version of Lua with types and other features]). I'm also not saying this is bad, but specialization can be a good or a bad thing and it is generally harder to know the exact domain of the problems you are trying to solve (the problems you are tring to find in the real world to specialize in) than to make a general-purpose language that can be used in certain contexts more than others. I think we should have even MORE languages, more and more and more of them, because no one will fullfil all the needs of all programmers ever. This is one of the reasons of why I think AI's can hurt the developer environment much more than aid, they are good at specific things they have tons of material to train on, and their general tendency is not to innovate but to homogeinize everything (the wet dreams of the "we already have many languages" person).
Could not disagree more. The best future for programming is one where we finally get some decent general-purpose languages again, and you can use them for basically anything. This "right language for the job" attitude is awful. It's true that some languages are better suited to some tasks. It's also true that learning a number of languages makes you a better programmer. But those benefits are profoundly outweighed by the cost of the grass-is-greener mentality that leads to developers who never learn things deeply and never become very productive because they're always looking for the hot new language that's going to make them so much more productive. And the benefits are also outweighed by how much effort it adds to collaboration. There's just this constant churn of needing to learn a new language to work on some new project over and over and over. And what makes this so much worse is that while some languages are maybe slightly better at some task than a good general purpose language, people want that to be true so badly that they distort reality to make it true. The world of programming is absolutely full of people with answers in hand desperately looking for questions. They take the tool and go out looking for problems that it might be the best tool for. And they don't find them - they invent them. They create abstraction on top of abstraction to prove that their tool is good if you use this certain abstraction. And wow, other tools aren't as good at that abstraction that was invented because this tool handles it idiomatically! And these people keep insisting that their tool is obviously the best way to do this thing even though they're 100x less productive than the people using some of the supposedly worse general-purpose tools. The "right language for the job" is usually an article of faith, and there's an enormous amount of confirmation bias when people find instances of it. Learning a programming language well is a huge investment, and you would be a fool not to think that affects your judgment of its utility. It makes it extremely easy to convince yourself that it really was totally worth it. But it isn't. The benefits, and there are some benefits sometimes - although often the claimed benefits aren't real - are just not worth it. The problem is that it's just been so long since we had GOOD general-purpose programming languages. You can use C, but it has all of these big unergonomic annoyances, or you can use any of these other languages that are all good at one thing, but otherwise garbage. And it's been like this so long now that people have forgotten what it was like when the good, most ergonomic languages actually were general purpose languages. That's why you're enjoying Go and feeling so productive: it's starting to go in the direction of a good general-purpose programming language. Rust tried, but then got really unergonomic. Zig is going in that direction. Odin is going in that direction. Jai looks promising. You say these are "low-level" or "systems level" languages, but they're not - they can express extremely high-level concepts. You can write a garbage collector in C - in fact most garbage collectors are written in C! Programming languages let you build arbitrarily complex abstractions. Any "systems language" can express higher-level concepts. That's what a function is! And it's not symmetrical. Low-level languages can express high-level concepts, but "high-level" languages mostly can't express low-level concepts to the same degree. A good systems language can express low-level concepts and also express high-level concepts that are just as ergonomic as a "high-level" language. Computers are not screwdrivers. CPUs are general purpose. The fundamental computation needs of one program and another are not actually THAT different. There is nothing you can't write in C -it's just that C is kind of annoying to write in compared to the niceties of some other language. We just need a new C. We do not need a million languages that waste everyone's time pretending to be 15% better at each specialized task. There are actual, general-purpose Right Answers. We're just so used to bad answers that we think there's no such thing as good general-purpose. We're so used to tradeoffs between piecemeal malloc and garbage collection that we find it hard to believe there are actually memory management strategies that are both performant and pleasant to work with. We're so used to languages that have to give up utility in a bunch of domains to be half-decent in one domain that we can't even imagine an actually good general-purpose language. Find a good C programmer and you're not going to hear a lot of "yeah, sorry, C just can't really do that". Maybe there isn't a good existing library for it, sure. And writing it in C is annoying for a lot of historical reasons, like headers and makefiles. But you're not going to hear "C can't really do that" the same way as you're going to hear "C# isn't really for that kind of application, sorry".
dev containers suck, but toolbox or distrobox IS different and it's worth trying. Having the possibility just install stuff and do not mess up your host system, but still not being in a sandbox completely disconnected from what you have on the host. It's just something you have to experience, it's just different then dev containers in so many ways.
Thank you for calling out people setting up their environment around containers. I've been in that situation. Had a tech lead build everything with Kubernetes from the ground up and developing with it was and absolute PAIN!
Im guilty of 6:00... i want to be sure I can squash any prod bugs during development, like CORS, reverse proxy configs, etc. I made a docker image specifically for running Django as a container but still allowing you to edit source and take advantage of hot reload
What I am looking forward though are the plans to have access to the several Web APIs directly from WASM so that we can finally ditch javascript/typescript completely and have a programming language agnostic frontend target for the web.
I’m not sure about the whole narrow scoped languages thing. I know a couple of languages really well (c#, JavaScript, assemblyscript and typescript, php, solidity, haxe, and currently learning rust), but it’s such a pain that when I want to mess around with something for a bit, I’d have to first learn lua or zig or whatever. I do get it, languages designed for specific tasks tend to be better for that task. If performance is critical, better use something where you can fine tune the memory layout so everything is optimised as much as possible, and not rely on a managed memory system. But at the same time, the more languages someone has to learn, the less time they have to really master one or two specific languages.
One thing ive been thinking aboit is hoe wasm may be a good plugin language. Maybe not as good as lua in some ways but wasm can be fast and more importantly, it would allow people to create plugins from different languages. I think zellij uses a wasm plugin system so we'll see how that goes. For portability wasm seems like a goos option. And as people mention, you dont write wasm, you target wasm. Having said that, i think wasm and docker have some similarities but they are also very different.
Who is getting burned by Rust? Rust works at a really low level and people have happy experiences using it bare metal on embedded micro-controllers etc. Rust works at an abstract enough level people use it happily for doing things on the server they would otherwise done in node.js or whatever.
@pnk4996 I don't know if Rust is "the best language", whatever that means. However it can do everything all the other dozen and more languages I have had to learn and use in my 40 year programming career could do. With the huge bonus that Rust provides in correctness and reliability over compiled languages, and the huge boost in performance over interpreted languages.
Yeah I'm currently learning rust and I love most of the design choices and can imagine myself using it for like everything... once I've actually learned it. At least one catch is the upfront cost of learning it, which isn't negligible. Not really a cost if you're coming from C++, but coming from garbage-compiled langs and there's a lot to learn.
@@Aras14 I have not done much front end development but it's clear that JS reigns supreme there because that was is everywhere. My feeling is that JS is sweet when used as originally intended, a sprinkling of script thrown in to pages to get some interaction going. I was appalled though to find myself using React that is huge and complex and needs a build system to get anything going. Essentially throwing away the whole point of Javascript. At that point one might as well build with any other language. I see no reason Rust is not a good candidate for front end work at that level of complexity. Having said that I only discovered Dioxus recently and have yet to try it. What is it about Dioxius you dislike?
5:47 this is a very bad take without explaining further. A repo that comes with a devcontainer configuration is strictly better than a repo without one because *you don't have to use the devcontainer if you don't want to* . But the people who do want to get a simple self contained and consistent environment to work in
When he's talking about WASM is this the same thing that a long time ago they compiled doom to run on the browser with? Or was that a different project?
I feel like people only like lua because they like neovim. Outside out that echo chamber, I find it hard to believe people really out there rockin with it like it’s “the best” at anything.
lua is one of my favorite languages ever, but I almost never use it, because there's nothing I could do in lua that I couldn't do equally well in C# or powershell 7 lol, I just don't do the sorts of things lua is really good at
I think Oracle really should have rebranded web applets and really went through the trouble of making containers easier for the web. They missed a huge market for reintroducing Java for the web. If they were smart they would really do well in client and server containerization for Java. But I don't think they ever will they have a huge hard-on for Enterprise world only. Honestly they've done some amazing things for Java but it's still kind of sad to me that Oracle owns the brand.
I find it very common where a lot of people create or advocate for certain tech, and while on the surface it sounds brilliant, the development experience (especially at scale) is actually atrocious.
I am very bullish on Wasm, I hope it becomes something. Not much for the front end but as a shared compilation target when you don’t need super performances. An actual solution to Java, JS and .NET (I will spare Python because little scripts are still useful). Imagine to compile just once and have a Wasm executable that runs everywhere for real without the need of an interpreter. I would circumvent the browser if possible, just have OSes offer the ABIs. Perhaps it is just a dream.
Is WASM always interpreted, or can the implementation just compile it to native code and run it like that? That would be pretty great, though it is way too late to affect iOS or Android, and thus the whole platform/tech will be limited in scope (consumers have already rejected alternative OSs like Ubuntu, Libre or Sailfish/Mer).
In data sci there is python, and R if you're an old professor. I don't get why software web dev people need 3 dozen different frame works and languages
@@nchomeyDjango was the only way for a long time. But still python webframework ecosystem pales in comparison to js. In machine learning there is only one true array language, numpy. Every other alternative, as jax, xarray, cupy, usually implement most of numpy api. Pandas is build on top on numpy, but is getting support for Array columnar data. And regarding your examples: spacy is for natural languages, scikit is a bunch of classical machine learning algorithms. scikit-image is the same for images, statmodels is for more advance statistical modelling, huggingface is like github for models, and provides a library to load pretrained models. So they are different libraries for different stuff. There nothing like the web frameworks that are just different libraries for the same use case.
@@viniciusmachadorodrigues1724 It is not a "nope" bro, you can use JS as a thin wrapper for other languages, and in the future proper DOM support can come. It can also be used to replace JS in most of the tasks that require speed.
@@viniciusmachadorodrigues1724 there is already a workaround for that in the rust ecosystem. look into web-sys. all of the rust frameworks are built on top of that. it's not even a performance issue either. many of the rust frameworks outperform popular javascript frameworks in dom rendering and it's not even close on the server. the issue is converting utf-8 strings to utf-16 and there is currently no solution to code splitting.
I think there might be a pseudo-code language in the future that can translate into application specific languages. That way the refactoring workload isn't as large when a new language or new language features go out into the future.
Transpiling isn't that new. To me it seems more likely that focus will shift in that inevitable microservicey direction and converge on protobufs-style strongly typed communication between services regardless of the domain specific language implementation for that component
Most likely no. There is no reason as to why you can't transpile one language into another. In fact, there are many existing transpiler to C/C++ such as il2cpp, Cython.
@@davr9724 Wouldn't it make more sense to just transpile an existing language that already has a wide usage. Creating another programming language won't solve the problem of some languages being better at different things.
Lua on the frontend, Elixir on the backend and Turso database - the Brazilian stack
Brazil mention
Basado
now read it backwards in ancient agyptian
If you're not using Elixir for a web backend all that means is you don't know the power of the beam vm.
@@EricLouisYoungOr you really like it but you just struggle to find the time to learn it well enough to use your current stack. :(
You might think you hate MATLAB but use it for 100 hours and then you’ll really hate it
100%. Rewrote an entire neuroscience lab’s operations software in C# because their matlab implementation was insane.
Use it for anything control theory related though and you'll love it more than anything.
I’m paraphrasing here:
“There are people who haven’t used Lua for more than three hours, but still have strong opinions.”
“I don’t have strong opinions a Python. I’ve only used it for about 100 hours.“
Earlier: “Haskell is useless.”
Come on, you’re just trolling us now, aren’t you?
Haskell is useless (I haven't written a single line of code in it)
he does on haskell, no surprise
> _"common, u're just trolling us now, arent u?"_
He doesn't really know what he's talking about yet thinks he does (as evidenced by his take on WASM). Classic Dunning-Krueger.
if lang == "Haskell":
raise UselessException()
Judging from his time learning ocaml, he doesn't have the background to evaluate Haskell imho. I don't necessarily disagree with the conclusion due to the ecosystem, but Haskell as a language does have some really amazing things that would blow his mind and that more mainstream languages should have
In particular I don't think prime has tried a language with Software Transactional Memory yet (i.e. like Haskell, Clojure, and pypy before the python3 schism). You just write threaded shared-memory programs without any channel or message passing boilerplate, and it just works without locks or race conditions because the language just has support for transactions and optimistic concurrency like in a SQL database.
Prime just made the classic argument for mmos for Lua:
“Dont worry, it gets good after the tutorial!”
After 200 hours*
@@Xeit modern tutorials in video games
Running an entire company on Web Assembly apps gives me an OrgWASM
Speaking my language. Extism is next level WASM.. making it seamless/easy to support most languages in just about any host language/platform with the bonus of sandboxed safety per module and in many causes much improved performance over host language.
You clearly can't spell.. #@d.-.-.b
Yeah if all you have is crap software that doesn't get massacred by wasm's poor performance, lack of features and poor scalability.
@@dgo4490 Wasm's poor performance? That depends on what language you are using to write and target wasm for. Zig, Rust and C put out really good wasm code. The runtimes on various languages may not be great, but they are improving as well all the time. Took the JVM almost 2 decades to improve performance noticeably. WASM is already more performant in most runtimes. I mean I guess if you are running WASM in NodeJS and writing WASM with NodeJS.. you may have a valid point. But write some WASM in Zig or Rust or even Go if you can get past Go runtime being part of each .wasm output, and you can get some pretty good performance.
It's definitely not easy to achieve when you suffer from a periodic monotile dysfunction, known as Flaccembly.
Odin is super clean syntax and readable.
10:45 If you could read Cyrillic...
Sneaky TOS
We’ve got a snitch over here
No surprise twitch mods are very strict about being english-only.
Ruzzians everywhere
Лол
I have fond memories of Lua. My compilers class in college did a semester long assignment where we built a lexer, parser, and interpreter in Lua. That professor's unit tests, to this day, are some of the best I've ever encountered. Passing those tests was like crack.
That whole WASM talk really reminded me of the pro/con debates about targeting JVM/.NET, and how we used to have Java in the browser with Java Applets. Gives me a lot of flashbacks there with the whole "compile to WASM/JVM and run everywhere!" argument.
Haskell is a good language to learn functional programming.
I agree. If you use a language that "has" it but let's you do everything else too, you never end up using the functional tools since you're always gonna want to take the easy way out. Haskell makes it sink or swim. It's hard and painful certainly for a lot of people but it also means you learn a lot more and a lot faster if you can stick it out.
Edit:
So, Haskell (and OCaml too actually, many FP languages) a good language for the same niches that other sort of runtimed languages (CLR .NET, JVM environment, BEAM). But each of the languages think in different ways. Some people think in a more imperative squirrely-brace way, some people like an abstract declarative way which is why Go and Elixir won't really compete with each other even though they're both for concurrent live web application servers, because they appeal to two very distinct crowds of types of developers. Go is very imperative style, Elixir is functional style.
So it's also not just about the applicability niches (web servers, game development, mobile apps, real time embedded) but also the psychologies of the people who want to do those things.
OCaml is also a great choice for functional programming! ❤
I agree. I learned how to solve problems in a functional approach with Haskell. And this made it much easier to learn other languages, including Rust.
@@Mth-Ryan The trick is to start with functional programming because if you with procedural languages first, it will make Haskell feel like a chore to write code for any project.
I hear Haskell is pretty good for learning Haskell
“You should use narrow scoped languages”
/ PHP’s confidence was boosted
Man, I really enjoyed this video actually. Just sitting down and talking about shit, hearing Prime's crispy voice in 1.5x speed. Listening to Prime--an actual experienced developer--talk about these topics that get discussed constantly is very... refreshing? Listening to you feels worthwhile, while reading about these topics on twitter/X where everyone thinks they're the second coming of John Carmack is soul-sucking. I'm all for the reaction content (those are amazing as well) but you just can't get better than a one and one discussion with the one and the only Prime.
And Rust can suck my big balding head.
It is even better at 3X 😏
I would like alt world where lua became the language for browsers.
lua's main drawback is javascript's main advantage, which are the coroutines.
@@ayadergthis
Every video you make is a masterpiece. Keep 'em coming!
Odin is great for game programming in general. Not just graphics, but whole games in Raylib and SDL are delightful to make in Odin.
I tend to prefer Zig above Odin for games myself, but mostly because I vibe with Zig's comptime. I like having the choice between the two
Counter argument for narrow scoped languges:
Learning a generic languge gives you a strong basis for anything you do.
For instance I know a bit of elixir because I build a website with it. Now someone wants me to build a website with them.
I am gona use python... ik python. For 3 years so I could build a stable python application
I agree, this is actually what I like about Rust. I like being able to only know one language and be able to manage okay in all kinds of different languages. Of course some languages are better, and should be preferable, in certain domains. Regardless, versatility is nice to have.
I think that the best is to use general purpose language that fits as DSL in a specific use case. Python is just like that. R is good but too much focused in stats and the ecosystem is only stats. Python has everything under the Sun. In astronomy people use to make custom scripting languages for data reduction packages. All suck. The altenative was IDL, a Matlab for images. People start discovering Python and now all astro is using Python as scripting language. I think that sometimes a DSL might be good, but the ecosystem is important too.
@tychoides what you are describing also happened with deep learning a few decades ago. This is why I known python in the first place.
It's my second languge after java because I wanted to do ai and ai is basically just python.
I do really like learning other languges but seeing python In webdev (django) a bit more in depth really changed how I see it as a whole.
Like its the worst language for everything until there is tooling and packages. And then it gives you just the right amount of abstruction.
There is no such thing as a "general purpose" language.
@@vitalyl1327yes there is lol
Julia for front-end, PHP back-end, and Visual Basic for middleware
GDScript is a language with one purpose
And to me it does it pretty well. I really like the simplicity of it while still having the benefits of fast compile times and an incredibly smooth experience. Really like the async await system of it too.
it's not a programming language. it's a scripting language for 1 specific software similar to formulas in excel.
@@一本のうんち uh, what? It is a programming language... and scripting languages are also programming languages, lol
Godot mentioned. Let's goooo
it's wonderful
Odin is a pretty good low level good generally purpose language. The reason there's a lot of graphics/games dev around it is mainly because,
1) There's bindings to DX, OpenGL, Vukan, SDL2, RayLib & Metal packaged with it. And if you want to uses those with a LL language that isn't C/C++, isn't OOP & easier to learn then Rust, you've got what Zig, Odin and maybe Jai;
2) The community around Odin is still very very small. So curtain parts are going to get over enthused, to the determent of Odin. Plus the only commercial use of it is JangaFX's programs; and
3) Not gonna lie. It do be nice for graphics programming but unlike Jai it's not explicitly built for it. It's just a nice language to use.
You really should try to get Bill back on & try it for a week/month. Even if that's just remaking some of your old tooling.
Prime knows all languages except for Python. Amazing ignorance.
wasm is also the target for bootstrap compiler for zig. That makes so much sense.
This is why I use Julia. It's designed especially for data and science computing.
But it is a bad scripting language and a bad system programing language. The compilation times and jit lag is still bad enough that for short scripts python is faster (I time it from the terminal). You can precompile, but still is not good enough and quite inmature. So not good for scripts. And you don't have true compilation, so no Julia libraries that you can call. I have tried to use Julia for data science and python is comparable or faster (Polars dataframes are really good). Using vectorized operations on large datasets are not advantageous in Julia. However, Julia is excellent for simulations, specially those involving differential equations. Julia makes more sense for Neural Networks that Python, but Julia cannot make libraries or executables as C++, so all work went to Python and C++. NN frameworks in Julia exist but they cannot compete with TensorFlow and PyTorch with all the money and development behind them.
@@fastasasharkTest Python+Polars vs Dataframe.jl, Polars is much better. Also the Julia LSP takes 10-30 secs in start. Pylance is javascript and is instantaneous. If any program in javascript is faster than your chosen language, then you have issues. Python is slow, nobody fights that. But you call C/C++/Fortran/Rust libraries. And those are fast, even with Python overhead.But Julia pretends to be a full stack, but it isn't. I would not make a script in Julia. I would not make a simulation in Python, I would use Julia. I would use C++ or Rust to make libraries. Julia is a DSL, is time to accept it.
lol
Julia people really want it to have success, but it's just not happening
@@9s-l-s9I would like Julia to have success because it's just plain better for my use case which is mainly scientific programming
So I want to crunch alot of numbers quickly. And also don't want to stay as close to my scientific notation as possible. Meaning less nested loops (which you can't avoid in Mathematical Sciences because you have indexes over which you iterate.)
But I am not without criticism. The inability to compile to binary is a crucial flaw, while not for my intends I don't understand why they do not have this.
Additionally I find the Julia way of doing traits very lackluster and I would like to have interfaces included. Instead of weird abstract supertyping
I use lua extensively for openresty development earlier in my career to route traffic’s dynamically down to all the microservices the company build, pretty fun language to work with.
Wasm is for making browser games. Or 3D collab software. Any resource intensive frontend, basically.
Starting arrays at 1 is superior because the length of the array is the same value as the greatest index. No "len - 1" everywhere. Lua is beautiful
Lua + Forth = a world conquest combo. Use Lua to generate code for a Forth system, and you have a really high-level setup that can also go really low-level. But you have to embrace some "building the language" as you go along. I'm already doing that, although I do use some Python for build stuff.
I never used lua but I like forth
Another issue with WASM is writing something in one language and then having to debug an issue on the browser
Write frontend in Free Pascal and write backend in Free Pascal.
Free Pascal W
These guys really basically the perfect language AND don't take money for it.. so much potential wasted
My memories of writing Pascal honestly are not that rosy. But Lazarus is pretty cool.
If you use wasm for rendering html, yeah then it’s not a “w”, but if you use it to do heavy and complex computations then yes, it’s great. Great examples are media editors & renderers, games, etc.
I just think creativity and doing what you are passionate about is what really kicked off software as a huge industry. When it was all science it was used for mathematics mainly, when the nerds started doing nerdy things we got home pcs and mobile phones.
All that is to say, if people wanna create a backend runtime for a frontend language, I'm completely happy to see and learn about it because creativity breeds progress. I disagree with forcing specific languages only for specific tasks.
docker reduced our new employee onboarding and env setup by like 90%
Yes, I think it makes sense to design languages for specific areas. I see Golang as being well suited for cloud/network/CLI and small GUI applications with GTK, and not much more. Zig for low-level and specially optimized tools. Odin for graphics. R for statistics. Python for machine learning and automation. JavaScript strictly for the frontend, and nothing more. That's my take on this.
While I agree on the premise, I think Zig and Odin overlap considerably, there is nothing inherently "graphics" about Odin.
You're right about this. I thought quote:
"Odin provides official libraries for all major graphics APIs: OpenGL, Vulkan, Direct3D11, Direct3D12, Metal, and WebGL 1 & 2.
Odin additionally brings you officially maintained bindings for popular libraries such as SDL2, GLFW, raylib, microui, miniaudio and much more, in its vendor library!"
makes more sense for graphics stuff@@defeqel6537
lol my dev stack almost centers on Docker, but the whole point of the stack is to avoid actually centering on anything, so I have non-Docker ways of running the whole thing alongside the Docker way, both baked into separate automation handles. I make options for everything and depend on nothing I can avoid depending on.
0:16 "Odin is geared towards graphics" is a real misnomer about Odin that is purposefully pushed to try and give the language an identity. It does absolutely nothing special with graphics, nor have anything "built-in" to the language for graphics. The took the code from other developers bindings projects for OpenGL, GLFW, etc., and slapped them into the "vendor" directory to be available for a default install. There is no special "low-level language optimization" being don, anyone could accomplish the same by simply adding/creating these bindings themselves, as is done with literally every other language and project that uses them. It is mildly convenient to get a project up and running quickly without, but anyone who is serious about making a game are going to spend an afternoon to fine-tune some custom bindings that are purpose built for their needs.
Well, convenience matters, a lot. Also for every one "who is serious about making a game" there's about X times people, who'll just download Unity/Godot/whatever and play with it. So making something sitting in between "just download Godot binary, and you're ready to go" and "spend an afternoon to fine-tune some custom bindings" may be quite valuable.
@@JohnDoe-vb3ks If you are using Godot/Unity, then you aren't using Odin, so not sure how that is even relevant. Saving a copy/paste of a file or two one time could be classified as "convenient" in the strictest sense of the word, but let's not pretend that it is some extraordinary feature that makes an entire language geared towards a specific "graphics programming. Actual language features and syntax would be far more relevant, not a copy/paste of files to the vendors directory.
I have nothing to against Odin, I merely pointed out that objectively there is nothing about it that makes it "geared towards graphics" more/less than other language, and this reputation has been artificially pushed and parroted.
@@ForeverZer0 "Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming. " is literally their definition of what the language is. I don't know how the whole "graphics programming" was purported. From what I understand, Odin was created because Ginger Bill didn't like some things in C and made a language for "the joy of programming". So I completely agree with you.
@@ForeverZer0 "artificially pushed and parroted" why do you make is sound like some conspiracy theory haha? I think a lot of it comes from the fact that is has a built in way of dealing with SoA and AoS and methods to access them in very useful ways which is a big thing in graphics and game programming (along with it just being a systems language). Also the fact that the only real production software written in Odin is graphics based (JangaFX suite).
@@ForeverZer0the joy of programming is the big one. this language has made me enjoy programming so much. I actually have been just building stuff for fun, rather than school or to get better for a job.
also heavy influences from Go and Python are apparent and really do push the "just get stuff done" mentality of the language. Wish the tooling for it were better, but Windows has the best support rn.
Debug c/cpp wasm in chrome with dwarf, source mapped, stepping, memory inspection, etc
The biggest usecase of Lua is Minecraft ComputerCraft
I love Computercraft
Just learn C#, it solves all your problems👹
65 megabyte executable
ROFL. So does Java. Go. Python. NodeJS. Rust. Zig. C. The list goes on.
I’m a self taught dev. I started by learning C#. Not really sure why but now I know a tiny bit and I am picking up Python super quick and it feels very easy. Can someone explain why everyone memes on C#. I’m genuinely curious, I just want to learn.
@@LilArquebus Ask that to C#'s brother, Java.
@@LilArquebus C# is a microsoft product, it was also created to be a competitor to another language. Those two reasons alone give it meme status. It's also kinda lost its place in the world. If you want speed, there are faster languages, if you want more expressive, there are better languages.
The only companies who use it are in industries that move *very* slowly. Its a fine language, but a lot of the ideas aren't as common in modern development. MVC being an example, you don't see that in the react/node world.
I've also personally been burned with C# + lightswitch back in the day, and so I don't trust trying their newer tech (blazor for example).
"Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software." - Zig mentioned!
Also, I think the "one language for a specific purpose" is both a good take and also in some level bullshit (relating to the title of your video as well).
It is good because specialization tends to make better tools fit to their specific purposes, it is good for organization and also allows for more conciseness in what you are trying to express with code.
And it is also bullshit because learning more languages do not imply in a loss, it expands your domain over all the languages you've already learned by generalizing the knowledge, having competition is also extremely good and factually one of the most common reasons I heard from people is that they "don't want needing to learn so much" (which is lazyness³; you also don't need to learn everything, because competition exists and thus you can work with whatever you want most of the time), and also because the more specialized you are the more you lose context about the world of other things, and the more you need that 'recurrence' and fragmentation inside one workload. You can see this with people using JSON, but still inventing more and more protocols around it, or with alternative solutions to protobuf that tries to cover logic or some other bs, or even with Lua where there are like dozens of versions of it trying to generalize it for more cases or for performance-based tasks (like lua-jit or Luau [the roblox version of Lua with types and other features]). I'm also not saying this is bad, but specialization can be a good or a bad thing and it is generally harder to know the exact domain of the problems you are trying to solve (the problems you are tring to find in the real world to specialize in) than to make a general-purpose language that can be used in certain contexts more than others. I think we should have even MORE languages, more and more and more of them, because no one will fullfil all the needs of all programmers ever.
This is one of the reasons of why I think AI's can hurt the developer environment much more than aid, they are good at specific things they have tons of material to train on, and their general tendency is not to innovate but to homogeinize everything (the wet dreams of the "we already have many languages" person).
Could not disagree more. The best future for programming is one where we finally get some decent general-purpose languages again, and you can use them for basically anything.
This "right language for the job" attitude is awful. It's true that some languages are better suited to some tasks. It's also true that learning a number of languages makes you a better programmer.
But those benefits are profoundly outweighed by the cost of the grass-is-greener mentality that leads to developers who never learn things deeply and never become very productive because they're always looking for the hot new language that's going to make them so much more productive.
And the benefits are also outweighed by how much effort it adds to collaboration. There's just this constant churn of needing to learn a new language to work on some new project over and over and over.
And what makes this so much worse is that while some languages are maybe slightly better at some task than a good general purpose language, people want that to be true so badly that they distort reality to make it true. The world of programming is absolutely full of people with answers in hand desperately looking for questions. They take the tool and go out looking for problems that it might be the best tool for. And they don't find them - they invent them. They create abstraction on top of abstraction to prove that their tool is good if you use this certain abstraction. And wow, other tools aren't as good at that abstraction that was invented because this tool handles it idiomatically! And these people keep insisting that their tool is obviously the best way to do this thing even though they're 100x less productive than the people using some of the supposedly worse general-purpose tools.
The "right language for the job" is usually an article of faith, and there's an enormous amount of confirmation bias when people find instances of it. Learning a programming language well is a huge investment, and you would be a fool not to think that affects your judgment of its utility. It makes it extremely easy to convince yourself that it really was totally worth it.
But it isn't. The benefits, and there are some benefits sometimes - although often the claimed benefits aren't real - are just not worth it.
The problem is that it's just been so long since we had GOOD general-purpose programming languages. You can use C, but it has all of these big unergonomic annoyances, or you can use any of these other languages that are all good at one thing, but otherwise garbage. And it's been like this so long now that people have forgotten what it was like when the good, most ergonomic languages actually were general purpose languages. That's why you're enjoying Go and feeling so productive: it's starting to go in the direction of a good general-purpose programming language. Rust tried, but then got really unergonomic. Zig is going in that direction. Odin is going in that direction. Jai looks promising.
You say these are "low-level" or "systems level" languages, but they're not - they can express extremely high-level concepts. You can write a garbage collector in C - in fact most garbage collectors are written in C! Programming languages let you build arbitrarily complex abstractions. Any "systems language" can express higher-level concepts. That's what a function is! And it's not symmetrical. Low-level languages can express high-level concepts, but "high-level" languages mostly can't express low-level concepts to the same degree. A good systems language can express low-level concepts and also express high-level concepts that are just as ergonomic as a "high-level" language.
Computers are not screwdrivers. CPUs are general purpose. The fundamental computation needs of one program and another are not actually THAT different. There is nothing you can't write in C -it's just that C is kind of annoying to write in compared to the niceties of some other language. We just need a new C. We do not need a million languages that waste everyone's time pretending to be 15% better at each specialized task. There are actual, general-purpose Right Answers.
We're just so used to bad answers that we think there's no such thing as good general-purpose. We're so used to tradeoffs between piecemeal malloc and garbage collection that we find it hard to believe there are actually memory management strategies that are both performant and pleasant to work with. We're so used to languages that have to give up utility in a bunch of domains to be half-decent in one domain that we can't even imagine an actually good general-purpose language.
Find a good C programmer and you're not going to hear a lot of "yeah, sorry, C just can't really do that". Maybe there isn't a good existing library for it, sure. And writing it in C is annoying for a lot of historical reasons, like headers and makefiles. But you're not going to hear "C can't really do that" the same way as you're going to hear "C# isn't really for that kind of application, sorry".
dev containers suck, but toolbox or distrobox IS different and it's worth trying. Having the possibility just install stuff and do not mess up your host system, but still not being in a sandbox completely disconnected from what you have on the host. It's just something you have to experience, it's just different then dev containers in so many ways.
Thank you for calling out people setting up their environment around containers. I've been in that situation. Had a tech lead build everything with Kubernetes from the ground up and developing with it was and absolute PAIN!
For 1 base indexing you should keep the muscle memory of 0 base indexing and always write +1 behind the index
Language oriented programming ... Sounds like racket
Racket, or any other Lisp with proper macros, or even Forth. Any meta-language is entirely on the other level, unreachable for the fixed languages.
Im guilty of 6:00... i want to be sure I can squash any prod bugs during development, like CORS, reverse proxy configs, etc. I made a docker image specifically for running Django as a container but still allowing you to edit source and take advantage of hot reload
What I am looking forward though are the plans to have access to the several Web APIs directly from WASM so that we can finally ditch javascript/typescript completely and have a programming language agnostic frontend target for the web.
Lua is fun until when you face the metatable.
Also it is completely normal to start index from 1.
You're doing a fantastic job. Don't ever stop creating!
I’m not sure about the whole narrow scoped languages thing. I know a couple of languages really well (c#, JavaScript, assemblyscript and typescript, php, solidity, haxe, and currently learning rust), but it’s such a pain that when I want to mess around with something for a bit, I’d have to first learn lua or zig or whatever.
I do get it, languages designed for specific tasks tend to be better for that task. If performance is critical, better use something where you can fine tune the memory layout so everything is optimised as much as possible, and not rely on a managed memory system.
But at the same time, the more languages someone has to learn, the less time they have to really master one or two specific languages.
One thing ive been thinking aboit is hoe wasm may be a good plugin language. Maybe not as good as lua in some ways but wasm can be fast and more importantly, it would allow people to create plugins from different languages. I think zellij uses a wasm plugin system so we'll see how that goes. For portability wasm seems like a goos option. And as people mention, you dont write wasm, you target wasm. Having said that, i think wasm and docker have some similarities but they are also very different.
odin is what you use when you want c without the bullshit. i think it's also pretty much feature complete as opposed to ongoing beta like zig and jai
Have you ever built something large with a large team using Lua?
Just curious, honestly. If less is more even in larger UI projects.
Prime is building an analogy portfolio
lua cause damn I love lua
Zig is awesome!
I started using C and php and after several years trying new technologies I keep using php and C. Oh! And Go! This one looks good.
Who is getting burned by Rust?
Rust works at a really low level and people have happy experiences using it bare metal on embedded micro-controllers etc. Rust works at an abstract enough level people use it happily for doing things on the server they would otherwise done in node.js or whatever.
@pnk4996 I don't know if Rust is "the best language", whatever that means. However it can do everything all the other dozen and more languages I have had to learn and use in my 40 year programming career could do. With the huge bonus that Rust provides in correctness and reliability over compiled languages, and the huge boost in performance over interpreted languages.
Yeah I'm currently learning rust and I love most of the design choices and can imagine myself using it for like everything... once I've actually learned it. At least one catch is the upfront cost of learning it, which isn't negligible. Not really a cost if you're coming from C++, but coming from garbage-compiled langs and there's a lot to learn.
@pnk4996 utrftftrp (use the right f*cking tool for the right purpose), no language can be THE best, even though c is goated
There is dioxus, literally rust on the front end. And I don't like to use it.
@@Aras14 I have not done much front end development but it's clear that JS reigns supreme there because that was is everywhere. My feeling is that JS is sweet when used as originally intended, a sprinkling of script thrown in to pages to get some interaction going. I was appalled though to find myself using React that is huge and complex and needs a build system to get anything going. Essentially throwing away the whole point of Javascript. At that point one might as well build with any other language. I see no reason Rust is not a good candidate for front end work at that level of complexity. Having said that I only discovered Dioxus recently and have yet to try it. What is it about Dioxius you dislike?
If domain specific there are a ton of languages to me, if general there about 3, and I can get by with 2.
wouldn't wasm for the backend just be a reinvention of the JVM?
software development is really running in circles
5:47 this is a very bad take without explaining further. A repo that comes with a devcontainer configuration is strictly better than a repo without one because *you don't have to use the devcontainer if you don't want to* . But the people who do want to get a simple self contained and consistent environment to work in
I have lost an interview that would 2x my salary because I said that I preffer JS rather than TS. The guy said I didn't know what I was saying.
there's an answer to your question and its one lett- char long, C
When he's talking about WASM is this the same thing that a long time ago they compiled doom to run on the browser with? Or was that a different project?
Zig is a domain focused language.
I feel like people only like lua because they like neovim. Outside out that echo chamber, I find it hard to believe people really out there rockin with it like it’s “the best” at anything.
Wasm for the backend sounds like electron...
Idk, I used docker for dev environment in multiple projects, it was pretty cool. It sucks if you do not know docker I guess
Doing lua for wow addons made me write way better js.
One based or zero based is fine. The problem is when languages mix the two... And yes, i work in a language that does that
lua is one of my favorite languages ever, but I almost never use it, because there's nothing I could do in lua that I couldn't do equally well in C# or powershell 7 lol, I just don't do the sorts of things lua is really good at
Languages to watch: Mojo, Nim, Zig, Odin & Roc
Best possible? Sure. But 99.9% of developers have no choice what language their moron bosses make them use.
When I was young I was taught Fortran 77, COBOL and PL/1, and then I discovered Borland Pascal, do you think it is the language of the future?
Listening to this while writing a blazor WASM application lol
There should be infinity languages.
I think Oracle really should have rebranded web applets and really went through the trouble of making containers easier for the web. They missed a huge market for reintroducing Java for the web.
If they were smart they would really do well in client and server containerization for Java.
But I don't think they ever will they have a huge hard-on for Enterprise world only. Honestly they've done some amazing things for Java but it's still kind of sad to me that Oracle owns the brand.
The only things I cringed on when writing Lua are the 1-based indexing and 3 different syntactical ways to write a function call..
I find it very common where a lot of people create or advocate for certain tech, and while on the surface it sounds brilliant, the development experience (especially at scale) is actually atrocious.
One based indexing is the devil and makes no sense from a low level point of view
on how many billion devices does wasm run?
I need a guide on what language to use for what purpose 😵💫 when do i use C? C#? C++? Python? How does one decide for each project?
wasm, create library in 1 lang, import it anywhere, debug it nowhere thoooooooo
HTML is the best programming language periode.
Ok, write quick sort in HTML then.
Wasm it's pretty great for compiling games to the web.
I hate having to learn different languages, it’d be so much nicer if there were less and they were maybe compiled differently -_-
Lua's typesafety sucks though. Used it quite a bit on Defold. Even the "JSDoc" equivalent of it feels like a hack.
One day he is against DSL, and now he speaks about importance for specific problems 🤦♂️
So WASM is replacing Docker but NixOS is also replacing Docker from the other way.
Who got a wasm behind the home depot?
i find the whole wasm on the backend thing weird... like we already have the jvm which does basically the same thing but way better?
I am very bullish on Wasm, I hope it becomes something. Not much for the front end but as a shared compilation target when you don’t need super performances. An actual solution to Java, JS and .NET (I will spare Python because little scripts are still useful). Imagine to compile just once and have a Wasm executable that runs everywhere for real without the need of an interpreter. I would circumvent the browser if possible, just have OSes offer the ABIs. Perhaps it is just a dream.
Is WASM always interpreted, or can the implementation just compile it to native code and run it like that? That would be pretty great, though it is way too late to affect iOS or Android, and thus the whole platform/tech will be limited in scope (consumers have already rejected alternative OSs like Ubuntu, Libre or Sailfish/Mer).
I've used lua over 100 hours for wow addon development and i still think it's awful
In data sci there is python, and R if you're an old professor. I don't get why software web dev people need 3 dozen different frame works and languages
In embedded there is C and C++. Has been that way for decades. Rust is just starting to be considered for new projects only.
@@davr9724 And Nim in embedded also emerges :)
Aren't there various frameworks for python? Django, fastapi, etc.. All sorts of machine learning stuff - spacy, scikit, huggingface etc
Umm. You are confusing libraries with framework. @@nchomey
@@nchomeyDjango was the only way for a long time. But still python webframework ecosystem pales in comparison to js. In machine learning there is only one true array language, numpy. Every other alternative, as jax, xarray, cupy, usually implement most of numpy api. Pandas is build on top on numpy, but is getting support for Array columnar data. And regarding your examples: spacy is for natural languages, scikit is a bunch of classical machine learning algorithms. scikit-image is the same for images, statmodels is for more advance statistical modelling, huggingface is like github for models, and provides a library to load pretrained models. So they are different libraries for different stuff. There nothing like the web frameworks that are just different libraries for the same use case.
Lua is fun to use when embedding in C(++?), don't know how useful for productive purposes though
WASM can be used to replace the need of docker in future, and also to replace JS in browsers, so it kinda is a W.
And the thing 4:46 is that the performance difference should not be extreme.
Nope, wasm doesn't have access to DOM, it need JS for that.
@@viniciusmachadorodrigues1724
It is not a "nope" bro, you can use JS as a thin wrapper for other languages, and in the future proper DOM support can come. It can also be used to replace JS in most of the tasks that require speed.
@@viniciusmachadorodrigues1724 there is already a workaround for that in the rust ecosystem. look into web-sys. all of the rust frameworks are built on top of that. it's not even a performance issue either. many of the rust frameworks outperform popular javascript frameworks in dom rendering and it's not even close on the server. the issue is converting utf-8 strings to utf-16 and there is currently no solution to code splitting.
I'm sick of the WASM hype, shit was supposed to "take over" like 15 years ago. I'm still waiting.
I think there might be a pseudo-code language in the future that can translate into application specific languages. That way the refactoring workload isn't as large when a new language or new language features go out into the future.
Transpiling isn't that new. To me it seems more likely that focus will shift in that inevitable microservicey direction and converge on protobufs-style strongly typed communication between services regardless of the domain specific language implementation for that component
@@gigitrix Isn't this the sort of Smalltalk direction?
Most likely no. There is no reason as to why you can't transpile one language into another. In fact, there are many existing transpiler to C/C++ such as il2cpp, Cython.
@@antongorov5275 I'm talking about a pseudo-code language that isn't meant to run as is, only to be translated to application specific languages.
@@davr9724 Wouldn't it make more sense to just transpile an existing language that already has a wide usage. Creating another programming language won't solve the problem of some languages being better at different things.
1-indexing is just as horrible as 0-based pagination (starts at page 0).
If You are building distributed fault tolerant real time communications systems, nothing tops elixir/erlang
Is this an argument for and idea for "Language-Oriented Programming Languages" like Racket and JetBrains MPS?