23 ms·
It's funny. Every time I use a new language, or go back to an old favourite, it becomes my favorite language for a time. Static typing? Wonderful error messages
by lawn 15y ago
It's funny. Every time I use a new language, or go back to an old favourite, it becomes my favorite language for a time. Static typing? Wonderful error messages! Dynamic typing? It does what I want! Functional programming? This is the future of programming! Object-oriented programming? I can describe the world! Low level? My code is fast. High level? My code is *expressive.
Is this normal or is it just me? Don't you come to like, or love, a new language? Every time I do something different I realize how good things could be. But this is just a case of "the grass is greener on the other side" I guess.
I ended up voting for Perl as it feels the most fun language. But ask me again in a month and you might get a different answer.
- bthomas 15y agoI'm the same way, though I feel like this flies in the face of reason. Switching to a less familiar language usually implies more headaches and less productivity, but the novelty makes it more enjoyable. Another example of how programming is oddly emotional.
- sassafras 15y agoNothing odd about it, IMHO. One of the things I think tech-oriented people consistently ignore is the role of emotion and the subconscious in decision making, even in what are nominally objective disciplines. Our conclusions may be based on reason, but then where do our hypotheses and inspirations come from?
- daithiobroin 15y ago... oh... that's just magic. i will intellectually dine on that for a week!
- bthomas 15y agoTotally agree. More accurate phrasing would have been "another reminder of how..." Book recommendation: Thinking Fast and Slow by Dan Kahneman. Great overview of how those factors affect decision making.
- sassafras 15y agoNice, I'm going to check that out :)
- Roboprog 15y agoNo, I think you hit the nail head on. I almost often do quick little things in Perl out of laziness (even though Ruby would be so much prettier), but I also like Pascal/Delphi for static typing and relative speed. C is about as close to assembler as I'd care to come. But this "Java" thing keeps paying the bills for most of the last decade. I guess it doesn't do everything wrong. (as much as I'd like closures & function pointers, tuples or even working destructors sometimes, I get by with Java)
- reginaldo 15y agoI feel likewise (except for the Perl part. I have the most fun working with PLT-Racket tools). I believe this happens because language design involves a lot of trade-offs, so every language incorporates these trade-offs. When one is comfortable in many kinds of languages, one is in a special position to see the trade-offs in the design of the language one is currently programming it. The way I see it is slightly different then the way you describe. Say I'm programming in Prolog, for instance. In the beginning, I'll be like "Wow, such expressiveness". But inevitably I'll do something that is outside the scope of Prolog and it will be as slow as hell. That's when I think to myself: "if I could just fix this little part... I miss C". So when I'm back programming in C I'll think "now my code is fast", but then inevitably: "if I could just find a way to do this without so much repetition". In the end, it comes down as a "right tool for the job" thing. One possible ideal would be do the things Prolog is good at in Prolog, the things C is good at in C (and also throw in some Python, Erlang, Lisp, etc). Except most of the time this is infeasible. Working with FFIs suck. Sometimes there are no FFIs, sometimes there are many incompatible ones, and the dream of calling any language from any language is just further and further apart. And don't get me started on the pain that it is to have multiple runtimes with slightly different semantics... Even if it were possible, a developer would have to learn all these little languages enough to be working on them comfortably, and we all know this is not going to happen. So hardly anybody does this, as hiring someone for a polyglot project is a complete nightmare.
- deleted 15y ago[deleted]
- kingmanaz 15y agoTradeoffs are a sign of a false dilemma; rather than choosing one solution or another, use them all where they work best. This is where Unix got it right all those years ago; Unix isn't just a slightly more stable platform for running today's bloated and monolithic software, rather, it's an elegant system for connecting maintainably-small utilities. The shell glues said utilities together into programs. Such an approach combines the best of high and low level programming, reuse and specificity, tradition and novelty, etc. I know shell isn't going to with this popularity contest, but a return to it is what's badly needed in CS today. Instead of attempting to recreate the shell in C# or Java's supplied libraries and subsequently becoming frustrated when interaction with the "outside world" is clumsily accomplished through an FFI pinhole, just use the shell as it was intended: as a lingua franca between utilities. Write what requires prolog in prolog, what requires c in c, what requires awk in awk, etc. Use flat file databases such as starbase or /rdb and avoid data prisons such as MSSQL, Oracle, MySQL, etc. Make all of these utilities return sane return values and spit out JSON formatted output. Finally, tie it all together with shell. If you need a UI, code it as a thin layer in TCL/TK, python/pytk, ansi c/gtk, or, consider pdcurses, etc. Profile your program and find any weak links in the chain. Recode in a lower level language only when needed. Programming doesn't have to be hard. As in speech, the more one says, the less one means.
- ww520 15y agoThat's the right attitude. Each popular language has its strengths and shortcomings. As long as you enjoy it and get the job done, it's a good language. What I can't stand are people dissing other languages to make their language look good. It's like they have to justify their insecure choice of their language by bringing down the others. As for Perl, I used to hate Perl for its many arcane ways of doing the same thing, but I then forced myself to do some Perl scripts at a job and it's not too bad. It got the jobs done. Since then I've used Perl for many quick scripts.
- vivekprakash 15y agoIt's exactly the same that happens with me, and i guess with most of the people. Besides, whenever i am programming in a new language, it happens that I gradually come to know more tricks, hacks and lower level details about the language which makes me like it even more. And, then it becomes my favorite language. And, then I can argue with someone over it. And then one day, I start writing hello_world in a new language, or one of the languages which i had not touched for many years and it becomes my favorite language. And then, i think how foolish it was of me! Btw, i voted for C because nothing is more beautiful than it IMHO; you can do whatever you want so elegantly that it mesmerizes me.
- knighthacker 15y agoWriting good Perl is definitely a blast. Make sure to read Modern Perl.
- zanny 15y agoI agree with this sentiment, and I voted for D because of what it is meant to be. They want it to support any paradigm, with any abstraction layer, and be useful in almost any context. I like that kind of freedom. Especially in a native compiled language. No, it is not there yet. The hope it that it one day will be. Because that would be amazing. It is already about as easy to write as Java, and usually beats it in performance.
- kxs 15y agoI feel the same way, my problem is it usually starts while I'm learning a new language, so I might drop the current to pick up another, which I of course drop again etc. pp... I'm learning Haskell atm which seems to be the first language that captures my interest even after months. (the announcement of Julia made me think of dropping it, though)