6 ms·
I Use Ugly Languages
- dons 14y agoContent-free
- deleted 14y ago[deleted]
- s_tec 14y agoIf these are the ugly languages, what are the elegant ones? Python might cover some of the items on this list, like Perl and TCL, but what is the elegant alternative to Erlang? I can't think of anything. Most of these language have a strong niche where they are simply the right tool for the job, regardless of their elegance. Trying to shoehorn a more elegant language into one of these niches would probably lead to awkwardness, especially if it's something the language wasn't designed to handle. In a way, I think using the right tool for the job is itself a form of elegance, regardless of the tool's superficial appearance.
- bitwize 14y agoErlang is actually a fairly elegant language, it's just weird-looking to people who are used to C or Pascal. Perl and PHP are ugly not because of how they look on the page but because of their bodged-together semantics, with magical variables that do magical things, keywords that don't mean what you think they mean, etc. If I had a word to describe Ruby it would be, fittingly, "kawaii". Like a girl from a third-rate anime whom you think is adorable as a teenager, then you get older, grow some taste and it dawns on you that her nose is in completely the wrong part of her face.
- zwischenzug 14y agoThe pro erlangers I know are mostly lisp or haskell programmers who consider erlang as a pact with the devil. It's all relative. Joe Armstrong himself said he made engineering compromises in the design of erlang because he was concerned about software useful for the telco industry, not an academic exercise.
- masklinn 14y ago> Erlang is actually a fairly elegant language, it's just weird-looking Most of the "sequential erlang" syntax is ugly as hell, from the various separators (statement, case, function) to the (downright dreadful) records syntax or the function reference syntax (both anonymous functions and reference to named functions are pretty bad). The language itself, as in the model and the underlying concepts and ideas, are generally neat, but the syntax isn't when compared to Haskell or even MLs derivatives. Aside from the literal bit syntax, that part is beautiful (for the most part, the complex modifier atoms still weird me out)
- theevocater 14y agoScala maybe? But yeah erlang has its own austere beauty.
- zwischenzug 14y agoWhy is python considered elegant where tcl is not? I find python robust rather than elegant.
- zeffr 14y agoI would say that the list boils down to free-form vs. structured more than anything else. All python code looks about the same due to it's structured nature. Because of this, the language appears more "elegant". I'm a devout PHP coder, and build on custom frameworks to do whatever it is that I need. I have some pretty big applications as well. My preference is entirely for free-form languages due to the fact that I can control elegance and readability. It may require more effort, but it is certainly doable. In fact, I'd like python a whole lot more if I wasn't forced into the structured paradigm. In short, lazy coders make ugly code despite the language.
- zwischenzug 14y agoI thought elegance was about conciseness and freedom of expression leading to creative and "neat" solutions to problems? The way you describe python as a language of structured constraint is pretty much the opposite of my understanding of programming language "elegance", with lisp or haskell being some kind of ultimate to aspire to.
- TelmoMenezes 14y agoWhy would prolog be considered an ugly language? Maybe weird, but not ugly: minimalist syntax, very few special cases, isomorphic to first-order logic and almost equivalent to the pure mathematical notation. I would not recommend it for general-purpose programming, but it solves a specific set of problems better than any other language.
- afandian 14y agoAgreed. Prolog as a language is about as direct and minimalist a representation of its concept as it's possible to get (along with Lisp and co). In that respect I would say it's rather a fine language as beauty goes.
- jongold 14y ago"But is it better for me to get started and end up with messy code, or to not start because I want things to be correct or good?" Ruby looks good without any effort.
- bithive123 14y agoThis is insecurity masquerading as insight. One does not need to invoke mental frailty in order to defend the use of a particular language. Nor is there a dichotomy between "a focus on getting things done quickly" and beauty or elegance. In short, this is lazy writing capturing a lazy thought process. Nothing to see here.
- zwischenzug 14y agoIt's a pointless article without knowing what the project is. I wouldn't use perl for my multi-threaded enterprise messaging solution, but I might use it for a useful text analysis tool.
- AnthonyMouse 14y ago>It's a pointless article without knowing what the project is. Exactly. I recall being assigned a small project years ago to print a route list in a particular way. I'm sure it could have been done with maybe a hundred lines of Go or Python or whatever language du jour. But it came down to a two line shell script. Which one is supposed to be the elegant one again? Also, there is a reason that a C compiler is written in C but a Java virtual machine is not written in Java. And anything with substantially more than a thousand lines of code that isn't written in a strongly typed language is all but guaranteed to be a maintenance catastrophe full of security vulnerabilities. (Or a pile of slow, hideous fail as a result of all the manual runtime type validation you have to do to prevent that from happening.) Elegance is a function of adaptability to purpose. A screw driver is an elegant tool to screw in a screw but an inelegant tool to hammer a nail.
- zwischenzug 14y agoI manage the maintainance of millions of lines of scripting code that's not type safe. Type safety is definitely not a significant problem, nor is speed.
- sentiental 14y agoWithout being quite as harsh, I generally agree. I have generally found new or inexperienced developers become scarred by projects that fall behind more than projects that grow out of control, and bias more towards getting something done, fast. Totally agree that the best advice for OP is to not underestimate his own ability to perform well in a better language. I think it is folly to assume you need a less structured language to get up and running faster. This very much reminds me of the Worse Is Better line of thinking.
- jasonmw 14y ago"I Use Languages I Already Know" might be a better title.
- olalonde 14y agoI feel the same when I write in English versus French. When I write in French, I feel like I am spending much more time trying to make my text elegant. I think I've heard this from other people as well but in the end, it's probably mostly subjective.
- sea6ear 14y agoHere are the alternatives that I have seen posited as being cleaner / more correct for the ones mentioned: Perl -> Python PHP -> Ruby C++ -> Java or Go Erlang -> Haskell Tcl -> Python or Scheme Prolog -> Lisp Shell -> ? These aren't so much my designations, as what I've seen in various references on the internet over the years. Confer for citations of peoples elegance / cleanness opinions: Tcl war usenet posts Perl vs Python wars C++ - Paul Graham's article on what languages solve, Rob Pikes reasons for creating Go. Erlang - Damian Katz "What Sucks about Erlang" Prolog - see above (re prolog syntax in Erlang) Tcl - Eric Raymond's comments on Tcl and Perl vs Python Shell - no citation, but I think defensible In almost every case I would face the mental blockage mentioned if I were to try to use the language to the right, compared to the one on the left side.
- dysoco 14y agoProlog -> Lisp ? Prolog is a logical and Lisp is Multiparadigm/Functional, completly different. I'd also change Erlang for Go, and maybe add Scala there too.
- sea6ear 14y agoYet whenever you see prolog or datalog reimplemented (see On Lisp, PAIP, AllegroGraph, Clojure Datalog implemetation, etc) the implementers have tended to appropriate Lispy syntax rather than the original Prolog syntax. This might also just be laziness, or perhaps simply love for lisp syntax by people using lisp.
- martinced 14y ago"the implementers have tended to appropriate Lispy syntax" But doesn't it make sense that, once you're extending a Lisp dialect to add some Prolog implementation, you'll keep using the Lisp syntax? I don't see it a question of lazyness or love: one of the main point so many people accept to deal with Lisp's seemingly crazy parentheses is homoiconicity. It's not that parentheses are that great and that we love seeing: ))))))))) or )))]))]))) (in Clojure). It's that the benefit (homoiconicity) far outweight the cost of using that syntax.