6 ms·
> I’m also having affectionate memories of JavaScript and Python I am afraid, things are equally messy in JavaScript and Python too. "X language isn't fun anym
by ctrlmeta 4y ago
> I’m also having affectionate memories of JavaScript and Python
I am afraid, things are equally messy in JavaScript and Python too. "X language isn't fun anymore" is exactly how I feel about X = JavaScript, X = Python, X = C++, X = Java and many other languages.
There was a time when I found Python and Js to be very fun languages. But recently the ecosystem has been becoming a mess. Build breakages on dependency upgrades are the biggest fun-killer IMHO.
Heck, there was a time when I found even Java to be fun. C++ too was fun in its early days. But every language keeps adding more syntax, more complexity and more ideas that deviate from the original design goals of these languages. These additions make the languages messy and the simple and characteristic ideas for which the languages were once loved get lost in all the complexity. I find it really disappointing. I really wish the languages preserved their original culture and philosophy.
For the never-ending and ever-increasing churn in all the languages I have gradually gone back to adopting Emacs Lisp and Common Lisp for all my personal programming needs. Common Lisp's standard is frozen in time, so for better or worse, I am protected from the constant churn I see in other languages. Emacs Lisp has a really good leadership that has been very wise to avoid adding additional complexity to the language. I wish the more modern languages were more reluctant in adding new complex ideas into the languages.
- Helmut10001 4y agoEven Markdown is further distorted the more time passes (and it isn't even a programming language).
- pwpw 4y agoHow so? I only use basic markdown (e.g. for ReadMes and quick note taking), so I'm fairly ignorant.
- Helmut10001 4y agoYes, but some 'central' agencies push for specific Markdown formats/use. E.g. Nextcloud [1] wants to use Markdown as a format, to save the output of their wysiwyg text editor. Everytime you open a Markdown file in nextcloud-text, it is 'formatted' correctly, according to the Commonmark specs, and written back, _without_ asking the user. [1]: https://github.com/nextcloud/text/issues/593 https://github.com/nextcloud/text/issues/593
- sprkwd 4y ago> I really wish the languages preserved their original culture and philosophy. You mention a couple of lisps as being similar to this. I wonder if there is any more programming languages that could be considered complete? Forth? C? ASL?
- vslira 4y agoANSI C and SML probably qualify, though I hope you don’t need utf-8
- dvfjsdhgfv 4y agoYou probably won't write any useful and nontrivial piece of software in C today without using external libraries, so if you really need Unicode, you will probably use one one of Unicode libs - although basic operations like copying will work without these anyway.
- whyenot 4y agoI think Lua is a good example. It has stayed simple and avoided change because of its position as an embedded language and strong leadership. Another good one would be Smalltalk.
- gyulai 4y agoYeah, definitely Lua.
- jwmcq 4y agoI couldn't tell you exactly why (though I have some ideas), but Lisps seem to settle into amazingly stable languages. Even Clojure, with all its initial trendiness, has been remarkably resistant to bloat and churn. Such things as it's added have largely been either standardisations of things that people were doing anyway, or very natural extensions of ideas that were already there, and it still generally passes the "compile X year old code" test.
- simongray 4y ago> I couldn't tell you exactly why (though I have some ideas), but Lisps seem to settle into amazingly stable languages. Even Clojure, with all its initial trendiness, has been remarkably resistant to bloat and churn. I would say that the core reasons are well understood: 1) The fact that there is built-in syntactical stability in any Lisp since the code must comprise valid Lisp data structures + a couple of special symbols. 2) The second reason has to do with the fact that Lisp macros allow language extensions directly by users, provided those extensions comply with fact 1. When users can extend the programming language by adding libraries, there is little reason for the programming language designers to chase every trend in language design, ending up with the kitchen sink—sorry "multi-paradigm"—languages of today. The core stays small.
- mattgreenrocks 4y agoAmusingly, point #2 brings its own set of complainers because they once had a bad experience with C macros.
- billfruit 4y agoClojure has massive amounts of ecosystem and toolchain pain, even though it is a cool language. Most common dev environment for it is a complex emacs tool chain. If you are seeking the simple joys of programming, Clojure is unlikely to be what you want.
- capableweb 4y agoI beg the differ. Setting up a Clojure deps environment requires like one file, want a REPL to connect to your editor? Usually add one/two lines to the deps.edn file + install the extension for your editor. The ecosystem also has a huge emphasis on backwards compatibility and finishing libraries rather than the constant churn you see in other ecosystems. I can usually find a 5 year old Clojure library and include in my project without any problems at all, and when a major library want to try out an idea that changes the interface, they usually start a new library instead of forcing everyone to use the new interface they've come up with. I'd say if you're seeking simplicity in terms of environment and programming, Clojure is definitely the way to go. And this is coming from someone who knew 0% Java coding before jumping into Clojure, and almost never touch/read any Java code when doing Clojure programming.
- BiteCode_dev 4y agoPython is still a lot of fun in certain areas: - machine learning, because AI is fun, and it's very easy to play with it in python. Also because you can easily stitch services together that allow you to make cool apps without having to code the hard part, like creating a discord bot to talk to midjourney. - anything that will use pydantic and type hints to generate parsing and validation. Fastapi, typer, etc. It's really a blast to just define types, and see your web api take off. But it is to be expected that when something has reached a critical mass, it becomes banal, and therefore not exciting anymore. Also, the Python ecosystem and resources have accumulated a lot of legacy stuff, and has been flooded with new comers content, so the noise to signal ratio is not great these days. I though as a python expert I would be less relevant given the number of new devs entering the market. Boy was I wrong. It just feel like having a cheat code to ask for more money to my clients, by the sheer amount of things I learned because I was there 15 years ago. The dependency thing is a good example. Dependencies is in actually a better state that it used to be, but because there is so much noise, very few people can enjoy it because they would have to setup python in "the right way" to do so. However, unless one invests a huge amount of time in looking up for this right way, filtering all the noise is going to be impossible. Hence most people have a broken python setup, and when they try to install something, it has a high chance of breaking. Of course, technical dept, and our inability to pay it back as a community, doesn't help.
- theonemind 4y agoWhat's the cliff notes of the right way / where's the signal in noise? I don't write Python, but Python is like Java these days, it finds you.
- BiteCode_dev 4y agoIn short, a huge number of packaging problems come not from packaging, but from the way you install, configure and call python. Unfortunatly, everybody and their mother tell you how to do this, and you'll find 1000 articles to get you in trouble, but very few to tell you what you should actually do. The full story is pretty long and most people don't have the time and resources to learn everything about it. The easiest way is to follow a receipe for the least pain possible, which includes limiting yourself to a single path for bootstrapping python. Here is the one I currently recommend to my teams at the end of the comment: https://news.ycombinator.com/item?id=32805483#32807220 https://news.ycombinator.com/item?id=32805483#32807220 It can't solve as much as knowing the whole deal, but it will remove a lot of ways to shoot yourself in the foot, and work around a lot of the legacy issues. And above all, it's easy to keep around and to apply. I noticed that anything more complicated will lead to people, so I removed a lot of things from it years after years (like -m, pipx, etc). Of course, this will not solve the setup that are already in place, which you will likely have. I can't provide a generic way to solve that, there are too many possibilities. Hopefully the community will eventually solve most of this by providing better default in the future, but this is an excrutiatingly slow process.
- branko_d 4y ago”There are only two kinds of languages: the ones people complain about and the ones nobody uses.” - Bjarne Stroustrup
- simplify 4y agoPretty much this. Any language worth using will have its complainers. This is generally a good thing :)
- imachine1980_ 4y agoi feel golang and c partially, take(go sound weird in this context) a different router and we need to appreciate this type of low change languages or the python 3/2 way of change for scratch both are ways to make better software, knowing that allow ecosystems need to be re written i wish in 5 year the idea of python 4 image even when they say don't, to make a new and better langues, lua is the clear example than people want simplicity we need to accept this change or we are hanged by the limitation of our past
- ModernMech 4y agoThere are definitely languages that people complain about but which nobody uses. Hare was a good example of this most recently.
- waffletower 4y agoHAHAHAHHA, Stroustrup, author of quite the monstrosity, would say that wouldn't he? rofl
- salmo 4y agoI agree with this so much. I loved Python for decades. Kinda loathe it now. All scripting languages have fallen into this, managing interpreter, test tools, and dependencies in a dev environment, CI/CD, and prod is more work than doing new stuff. Java/Spring is obnoxious. Spring just enjoys breaking APIs or behavior on patch releases so much. Well, and I have a personal dislike of Java/C++/C# style OO. The temptation to over engineer is too great. I’ve been enjoying Go more (I have Pascal and C roots). But I feel the pain coming as the ecosystem grows. I haven’t LISPed in years. Maybe I’ll tinker in Clojure again. I don’t care for Emacs, and last time I checked, setting up a CL was a PITA. Sigh, even choosing a LISP/Scheme is a journey in itself.
- billfruit 4y agoClojure has massive amounts of ecosystem and toolchain pain, even though it is a cool language. Most common dev environment for it is a complex emacs tool chain. If you are seeking the simple joys of programming, Clojure is unlikely to be what you want.
- CraigJPerry 4y agoThis was the path i was sign posted to take and I felt like onboarding was fun: 1. I needed to install clojure https://clojure.org/guides/install_clojure 2. I needed an editor, i wanted to use VSCode so the Calva plugin was what i needed https://calva.io/paredit/ 3. I needed to learn how to edit Clojure, i tried going beyond this point without learning paredit and it slowed me down so i came back and invested an evening - in vs code do ctrl+shift+p then choose the calva getting started repl 4. You need build tooling and it seemed the choices were lein (easy user experience but not “blessed” future direction? - not sure about what i’m saying here but it’s the understanding i formed). Tools.deps is the blessed approach but designed to customise the heck out of it - problematic for a beginner like me! Thankfully you can park the customisation for later and just get started with a well laid out starter https://github.com/practicalli/clojure-deps-edn - there’s even a video walks you through its features, all the inspectors and visualisers are nice to know about but not needed yet on a beginner journey At this point I was free to do whatever. In my case so far that’s meant a toy project in reframe (loved it), another in luminus (also loved it), then i went off on learning more of the language since i felt lack of familiarity was most of my challenges with my luminus project. Clojure is one of my fun languages. I laughed along to a TSoding video where the chap was quite openly dismissive of clojure as he went along but everything he tried just worked and fell into place like dominos. It just made me chuckle. https://m.youtube.com/watch?v=7fylNa2wZaU https://m.youtube.com/watch?v=7fylNa2wZaU I have Bob Nystrom’s interpreters book and i intend to use clojure as i go through that. We’ll see how successful i am…
- deleted 4y ago[deleted]
- dools 4y agoMeanwhile I just get shit done with PHP and JavaScript. I guess I never have to do anything on the frontend. That’s where all the disasters are.
- zigzag312 4y agoIMO the problem isn't new features, but that obsolete things are never removed from the language. But even though a feature is removed from a next version of the language, old code still needs to work. A project must be able to contain vOld and vNext files. Another thing I also miss is better interop between languages. Is C based interop really the best we can do?
- ragnese 4y agoI'm in a similar-ish boat. I enjoy most languages that I learn... for a while. Once the excitement wears off, though, I start to see the flaws or inconsistencies. And, eventually, the flaws are the only things I notice anymore. Of course, that's as much a criticism of my own attitude as it is of any particular programming language. But, in my defense, I think that we truly haven't "solved" the problem of software development. Ideally we'd need languages that make it easy to describe our human intent, make it hard to make mistakes, and are resource-efficient. There is no such language yet. I used to also love C++ and Java. I liked the feeling of control that C++ gave me- believe it or not, I thought that writing 5 constructors for a class/struct was somehow good... It would be hard for me to even say I have a "favorite" language today. The language I hate the least is probably Rust, but even that has its warts, weaknesses, and inconsistencies. I used to like Swift almost as much until they kept tacking on features that are nothing at all like the core of the language- now I kind of hate Swift. I enjoy Kotlin for about 30 minutes at a time until I bump into one of its many design inconsistencies or incompatible/incomplete features. I did enjoy Clojure even though I'm not a huge fan of non-static typing. It at least has a consistent vision and is clearly implemented with real engineering (like using persistent data structures and immutable-first designs, as opposed to most other languages that just tack on random pieces of "FP" and say "Who cares if you make umpteen short-lived, heap-allocated, copies of that array? Computers are fast!" Ugh...).
- resonious 4y agoJavascript and C++ are usually pretty backwards compatible - at the very least, you can run your C++ compiler in compatibility mode for a certain standard, so I don't see any need to get caught up in the churn there. Personally I've been using Ruby for almost 9 years and I still find it fun. Maybe that's just because I tend to agree with all of the new features they add to it.
- andreimackenzie 4y agoI've really enjoyed Golang for this reason. The powers that be take a cautious approach before adding major new stuff, even when the community complains loudly about lack of important features (e.g. generics for many years until recently). Go code I've written years ago is easy to adapt to new versions and ways of doing things, even when I have to switch gears to others languages for months/years at a time. Go is predictable.
- dvfjsdhgfv 4y ago> But there was a time when I found Python and Js to be very fun languages. But the ecosystem has been becoming a mess. Build breakages on dependency upgrades are the biggest fun-killer IMHO. It's not the way I remember. At the beginning you got Python with the batteries - and it was awesome - but for everything else you were on your own, and sometimes it was nightmarish. There was no pip, not even setuptools. Today I can install anything I want with one command on any of the 3 major platforms. Granted, there are glitches and we're accustomed to rapid progress now, but it's easy to forget how far we got.