6 ms·
Programming languages list, by Ian Hickson
- alexchamberlain 13y agoIn the C++ row, what is meant by "very limited" RTTI and "limited" Automatic Memory Management. RTTI is, AFAIK, actually a C++ concept and memory management is in fact implementation defined, though most implementation provide you with none in the runtime. The standard containers do, of course, provide memory management; IMHO, the balance is great in C++. Also, Python garbage collection is optional and generally the memory management is through reference counting, not crappy stop the world garbage collection.
- andreasvc 13y agoRTTI is runtime type introspection. You may be confusing it with RAII, resource acquisition is initialization. Yes, technically reference counting is not garbage collection, but in these sorts of comparisons the term is typically intended to distinguish automatic from manual memory management. The overhead of reference counting is non-trivial, that's why it's lumped with the garbage collected languages.
- sambeau 13y agoI was amused by: Perl 5: Paradigm: Yes*
- V-2 13y agoYes, No, FileNotFound, three major paradigms
- laumars 13y agoIt was the "unmaintainable" comment that got me. This guy clearly doesn't like Perl and is letting his bias affect the list. Perl is no less or more maintainable than any other programming language. It just depends on the developers you use that particular tool. And the whole "Perl promotes unreadable code" is really a thing of the past; modern Perl has come on leaps and bounds.
- Strang 13y agoAgreed. I thought "Paradigm: Yes" was hilarious, but the Perl row has a few errors. "Function Overloading" should be "N/A" for a language without subroutine signatures. Any Perl function can take any combination of arguments and decide what to do with them. This is used to create de facto function overloading. "Method Pointers: No" is ridiculous. Perl has subroutine references, which includes methods. You can even use a method name string as a method reference if you need to.
- sambeau 13y agoI think if you read this in the context of Hixie being a well-know internet person, standards geek and known Perl hacker you can see that it is supposed to be humorous (and a little self-depracating being he has to maintain his own Perl scripts). Don't take it too seriously and you will see there is a more than a grain of truth in what he says. http://ian.hixie.ch/career/resume.html http://ian.hixie.ch/career/resume.html http://lxr.mozilla.org/mozilla/find?string=PLIF/ http://lxr.mozilla.org/mozilla/find?string=PLIF/ http://software.hixie.ch/utilities/cgi/data/data.pl http://software.hixie.ch/utilities/cgi/data/data.pl http://software.hixie.ch/utilities/cgi/pingback-proxy/server-to-get-proxy.pl http://software.hixie.ch/utilities/cgi/pingback-proxy/server...
- dkhenry 13y agoActually Ian, Scala has all the things you mention ( It isn't as nice for direct memory manipulation as C, but you can do it ). Not that everything in that list is important or necessary, It kind of like saying you can't get a car that has a maximum speed of 200mph and a fuel economy of 100+ MPG, and is also a reusable space launch vehicle. Yeah each of those exist, and we could make something that checked all those boxes, but even if we could would it be wise to design said vehicle just to meet an arbitrary set of features, not taking into account any trade offs that would make it better at any single task ?
- wes-exp 13y agoNo Lisp! And clearly written from a frame of mind that hasn't imagined much beyond the capabilities of C and Java.
- archgrove 13y agoI think if "Controlled by Microsoft" is going to be a "notable failing" for C#, "Controlled by Google" has to be a negative for Go, and "Controlled by Oracle" has to be one for Java.
- deleted 13y ago[deleted]
- dylangs1030 13y agoI think that depends more on how the company manages the development than the company itself.
- gngeal 13y agoGo is probably less controlled by Google than either C# by MS, or Java by Oracle.
- CmonDev 13y agoC# has an alternative compiler - Mono that let's it run on Android, iOS. How do I run a Go program on iPhone? What's the point of the "freedom" then?
- Svip 13y agoC# is from 2000. Go is from 2009. Give it time. Besides, there is an iOS port of Go here: https://bitbucket.org/minux/goios/wiki/Home https://bitbucket.org/minux/goios/wiki/Home
- CmonDev 13y agoIf there will be one long green bar (as it should be) then Python/Ruby hipsters might get nervous. We don't want that, right?
- lanna 13y agoAm I the only one around here that feels bothered when one writes "orientated"?
- samsquire 13y agoIt's British English :-)
- twelvechairs 13y agoto orient is to face east. orientation is understanding which way is which (if you know what is east, you know others by extension). because knowing any direction gives you orientation, any known point of reference is therefore an orientation. to be orientated is to have an orientation.
- lanna 13y ago"Oriented" is the right word. "Object-oriented"
- SEMW 13y agotwelvechairs was explaining the etymology. As current usage goes, it's a British English / American English difference, as has already been pointed out. (And frankly, taking an arbitrary regional spelling difference and declaring that whichever one you're used to is "Right", without even an attempt at a justification, is pointless at best and borderline trollish at worst.)
- drdaeman 13y ago> Python: Direct memory access: no Wrong. `ctypes.c_char.from_address(a)` and enjoy your SIGSEGVs like a seasoned C programmer. (Well, that is unless you're on Jython or IronPython.)
- oleganza 13y agoNo Objective-C on the list. LLVM is open source project sponsored by Apple, but I'm not sure about Foundation framework (a standard library with containers, concurrency functions and networking).
- V-2 13y agoWhat is the difference between RTTI support in C# ("yes") and Java ("comprehensive")? I only superficially know Java. What advantages does it offer over C# in this aspect?
- cstuder 13y agoWhat's the difference between 'VM' and 'Native with runtime'? (In the 'Execution' column)
- richardwhiuk 13y agoI suspect it's the difference between being forced to ship with a library at runtime to provide library functions, and the compiled byte code being interpreted by a native executable. e.g. the difference between 1+1 being translated to bytecode meaning 1+1, and it being actually translated to an x86 add operation.
- unwind 13y agoThe former means that programs are converted into code for a virtual machine, which is then executed. Often this involves compiling them back to native code, as in various JIT solutions. The latter means that the code compiles straight to native machine code, but also that executing the code relies on services provided by a "heavy" (as compared to C's runtime library) runtime library. For Go, the runtime does garbage collection, i.e. it's takes a fairly "active" part of the execution.
- andreasvc 13y agoNative with runtime means you get a native executable which has to use the runtime of the language, for example containing its garbage collector and support for co-routines. With VM you get code for, e.g., a stack or register-based virtual machine, not native code.
- pjmlp 13y ago'Native with runtime' is lack of understanding what a compiled language is all about. Even C and C++ have runtimes.
- weland 13y agoI presume this was mostly tongue-in-cheek or something, but even so I have a couple of pet peeves: - It's not immediately clear what the criteria for a "major failing" is. C# is actually an ECMA and ISO standard, just like JavaScript, certainly less controlled by Microsoft than Java is controlled by Oracle through their rubber-stamping JCP, or than Go is controlled by Google. Also, if we're getting stuff like "one-based strings" in the list of failings (BTW, wasn't indexing done starting from 1 for anything in Pascal?), indenting-based block delimitation should also be listed there for Python, because what the hell, I don't like that either. - Execution is arguably a property of the runtime, not of the language. There are some C interpreters around, for instance.
- Svip 13y agoOnly strings are 1-indexed in Pascal, all other forms of lists (both array of and object based lists) are 0-indexed. It is rather confusing. It may be my limited English, but I don't entirely understand what he means by 'case-for-visibility'.
- weland 13y agoFair enough. My memories of it are very dim, I could have sworn arrays were 1-indexed, too.
- L4mppu 13y agoOnly 9 languages listed? I am disappointed.
- porges 13y agoC# has virtual constructors? I also wouldn't rate its Unicode support as highly as Java or Perl's.
- skc 13y agoWhy not?
- mjburgess 13y agoI wont say this list is worthless, but, given that there's so much missing or wrong... it's at best pointless.
- pjmlp 13y agoThe "Execution" column show a lack of understanding about languages and their respective implementations. And the "Other notable failings" looks pretty much a very biased personal opinion.
- wes-exp 13y agoYes. Execution is not actually a property of a language, but of its implementation. Some languages have several implementations, each with distinct characteristics!
- pjmlp 13y agoHow do young developers fail to learn this nowadays? Back in the 8 bit days, at the age of 12 I was already aware of compilers and interpreters implementations for several languages. Just as one possible example, there were BASIC interpreters and compilers for CP/M.
- qznc 13y agoD still lacks on the libraries front, but apart from that it is fits the bill. Easy interop with C and even somewhat interop with C++ makes the library deficiencies bearable. Feature table: http://dlang.org/comparison.html http://dlang.org/comparison.html
- qznc 13y agoI do not understand the "paradigm" column. Labeling C++ as OO is not fair, especially since the standard library is rather "Generic Programming" than OO. Most of the languages do not fit into one paradigm anyways. Also, why does Go have "Native with runtime"? All the other native languages have runtimes as well.
- AlexanderDhoore 13y agoToday I Learned the difference between Nominative and Structural typing. Go is labeled as structural, while the others are nominative. Check it out: http://c2.com/cgi/wiki?NominativeAndStructuralTyping http://c2.com/cgi/wiki?NominativeAndStructuralTyping BTW: Every time I dive deeply into programming, especially computer science theory, I come across this c2.com site. Why isn't it mentioned more? I understand it was the first wiki ever?
- Marazan 13y agoThe c2 wiki is the source of secret programming knowledge and opinions. As such the first rule is not to talk about it lest people ruin it. It's probably one of the best sites on the internet for programmers wanting to learn.
- AlexanderDhoore 13y agoOk. Got it. Ssh be quiet, we're hiding! [1] [1] http://www.youtube.com/watch?v=7cqq0V9LnXY&feature=player_detailpage#t=15 http://www.youtube.com/watch?v=7cqq0V9LnXY&feature=player_de...
- zhaopuming 13y agoI think D will soon become your ideal language. It is quickly stabalizing and fits nearly all aspects you've listed, with only `a rich set of libraries` still on the road. You can see how `vibrant` the D community is in http://forum.dlang.org/ http://forum.dlang.org/.
- edem 13y agoWhere are all the functional languages? Did I miss something? Where is LISP? Prolog? You only know about the OO and the procedural paradigm? "Prototypes" is how OO is achieved in javascript it is not considered a paradigm in that level you are using the term. You should've just said it is OO. I also don't understend why closures are "planned" in java but method pointers are "no*"
- parasubvert 13y agoIt is only "object oriented" in North America. Europeans have long used "orientated". If you've followed the HTML 5 spec process, you'll have answers to your other questions as to Hixie's inisght and taste in technology paradigms.
- edem 13y agoOk, I corrected it. He was talking about programming languages in general. He did not mention HTML 5 at all. If I think about writing web applications the first programming language which comes into mind is Clojure. This does not make sense for me.
- parasubvert 13y agoHe's the HTML5 spec editor, known for his strong opinions on many topics. I am being polite here, but there is a reason certain languages were ignored.
- CmonDev 13y agoC# is VM/Native. It runs native on iOS via Xamarin compiler. It runs native on Windows Phone 8 via cloud compilation. Please correct/do more research.
- parasubvert 13y agoThis seems like classic Hixie.