Hacker News new | past | comments | ask | show | jobs | submit login
A list of computer languages with release year and category (codelani.com)
128 points by codelani on Sept 25, 2019 | hide | past | favorite | 80 comments

For those complaining that they need it sorted by date:

    curl https://raw.githubusercontent.com/codelani/codelani/master/langs.csv \
        | awk -F "," '{print $NF, $0}' \
        | sort -n                      \
        | sed "s/^[^ ]* //"            \
        | less
This will fetch the CSV, copy the date to the front, sort it, then remove the date.

There are a lot of entries that don't have dates. If you want to remove them, pipe the result through:

    grep -v ",$"

Just added column sorting by clicking the headers. But your solution is great too! Thanks!

`awk` is not needed since `sort` can apply to the fourth column.

    curl ... \
     | sort -t, -k4 -n
     | less

That's true, but the solution I suggested works to sort on the last column, whether or not there are exactly 4 columns. I avoided having to count how many columns there are, assuming only that the date comes last.

But yes, if you know the date is in the 4th column then your solution also works.

Anyone around to convert this to that nushell that was featured on HN a few weeks ago? I'm curious to see what the comparison would look like in a super practical real-life scenario

Thank you!

Go! and Go are two different languages. Read the last section of the wikipedia page for Go! listed above for their objections against Google for picking that name.

I was going to add C++ to the list, but I see that it's listed as cpp.

It's lists c-- correctly, so I don't know why C++ would be any different.

I bet I blocked + because (I incorrectly thought) it was not a valid URL character.

Thank you! Added Go!, CAL, SPIR, Refer, and DokuWiki. Will add RuneScript, Vulkan and Ansible.

Some of these have confusing type fields. Like asterius-compiler which is a "compiler", but apparently not a programming language? It seems pretty loose at what constitutes a "computer language", with numeralSystems, cloud, non-programmable text editors, and mathematical notation among other strange entries.

It feels like there needs to be some kind of cutoff on what we're calling a language here. Maybe if it is Turing Complete? I mean JPEG might be considered a language in some ways, in that it encodes data and the computer has to parse it, but I wouldn't normally classify it as a language.

Thank you for the feedback! The categories are a loose grouping. In the future there should be a lot more columns so will be better ways to cluster and view groupings.

True that. AWS is on the list as well which is quite odd.

I don't see Chef [1] which was part of the MIT Mystery Hunt many years ago. If you have ever told anyone that programming and/or algorithms are just following steps like a cooking recipe, you should read about it. I don't think there was even an interpreter back then, so you had to "execute" the program by hand.

[1] https://esolangs.org/wiki/Chef

Very interesting! Added. Thanks!

There are a lot of esolangs still to add. It's helpful to have people recommend noteworthy ones.

Maybe you want to add Klong (K family, http://t3x.org/klong/) -- not necessarily eso, but not exactly mainstream, either. :)

Then, T3X was invented in 1995. And Klong in 2015.

Very cool! I love to see new array languages. Added. Thank you.

Wow, 4 of my languages there: Lobster, False, Amiga E, Aardappel :) I contributed 1/750th of the worlds languages. Achievement unlocked!

I feel like a geneology of programming languages is also a useful representation. More here: https://github.com/stereobooster/programming-languages-genea...

Would be nice to have an interactive browseable/searchable/sortable graph with additional data such as year of release.

Neat! Thanks for sharing this link! I plan to release a better frontend for exploring the DB soon.

To this day, I still miss the ability to list, move up and edit code at the same time using C= 64 terminal. Good days.


"Written by British programmer David Simons in 1983, who was then just 16 years old at the time...."


Where should we send links to missing languages (like https://en.wikipedia.org/wiki/Gofer_(programming_language) ) ?

Added. Thanks!

Anyone willing to work on Abacus please send me a papyrus. :D https://codelani.com/languages/abacus-machine.html

Amazingly, it's still in the top half of programming languages! Which just goes to show how meaningless top N% is when you have a list of so many languages.

Top half measured how? Lifetime number of users? And, for whatever the metric is, what number defines the boundary between top half and bottom half? (I bet the boundary number is astonishingly low. Well over half the languages got very little traction.)

Wish it was sortable by date

Closest I could get:

`Array.from(document.querySelectorAll('table tbody tr')).sort((a, b) => { const yearA = parseInt(a.querySelector('td:nth-child(3)').innerText) || 2019, yearB = parseInt(b.querySelector('td:nth-child(3)').innerText) || 2019; return yearB - yearA; }).forEach(tr => { tr.remove(); document.querySelector('table tbody').insertAdjacentElement('afterbegin', tr) });`

Just added. Hope it doesn't break anything as that's the first Javascript I've added to an otherwise static site. Please let me know if that works!

This is doable with some JavaScript. Paste the JavaScript from this gist [1] in your console while on the web page, and the table will be sorted descending by year. Swap `bValue - aValue` on line 4 with `aValue - bValue` to sort ascending.

[1] - https://gist.github.com/bendiksolheim/307a6af9aba2c4360c75b9...

It breaks/stops at rows with blank "appeared".


document.querySelector('tbody').append(...Array.from(document.querySelector('tbody').rows).map(row => ({ row, year: parseInt(row.cells[2].textContent) || 9000 })).sort((a, b) => a.year < b.year ? -1 : a.year > b.year ? 1 : 0).map(x => x.row))

Yeah, I find it quite difficult to navigate without sorting them in chronological order...

And by users.

How does it estimate the number of users?

A very basic decision tree/random forest model. I haven't updated it since the first version I did about a year or two ago, because I didn't have users myself and no one provided any feedback. Thank you for the feedback! I've made a todo item to refresh/explain the model.

Looks like it uses github stars for that.

That would exclude many users for languages that are in legacy systems, which are rarely tracked in github.

It could be alright for a rough/relative estimate...

Or jobs?

I don't know, but looking at ADA, 20 jobs seems very low. I was under the impression that ADA is still a required language for a lot of military hardware.

My guess would be that he's scraping jobs sites for listings numbers, and I suspect something like ADA development is using different channels to find devs.

Yes, a year or two ago I grabbed job listings from sites like Indeed and LinkedIn and trained a very crude basket of models. No one ever seemed to use it so I hadn't touched it since then. Time to refresh that, thanks for the feedback! Interesting points about ADA and I'll try and bring in some of those back channels.

Prolog has 402 claimed jobs: https://codelani.com/languages/prolog.html but looking at any Prolog implementation lists 0. I cannot imagine that there are this many (available?) Prolog jobs in the world, nor that no advertised job would specify the implementation the company uses. I think the numbers are generated using some sort of garbage in, garbage out system.

See answer above. A very crude model. Will ship a new one with an explanation shortly.

Poorly, it seems.

> Steel Bank Common Lisp, aka Steel Bank Common Lisp, is a historical programming language

I'd call it a compiler, not a language, and I've never heard it called "historical". What makes a language "historical"?

> ABCL%2Fc%2B is a historical programming language created in 1988.

Got some escaping issues here.

> Beginner's All-purpose Symbolic Instruction Code, aka Beginner's All-purpose Symbolic Instruction Code, is an actively used programming language created in 1964. BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use.

Lots of redundancy redundancy here, redundantly.

> #include <objpak.h>

I'm having a little trouble finding what this is, but it's not part of (modern) Objective-C, and this hello-world doesn't compile with Clang. It seems to be a class library that shipped with one (non-NeXT/Apple) Objective-C compiler. I don't think I've ever seen the do:{:each |...} syntax in Objective-C, either.

SBCL is "historical" while Basic is "actively used". Hilarious

> What makes a language "historical"?

Perhaps I should have 3 categories: active, legacy, historical. Active would be the language itself is still evolving, legacy would be the language has stopped evolving but some people still use it, and historical is there are no known public users.

My current model that predicts that status is very wrong and needs an update. Added to the todo.

> Got some escaping issues here.

Will fix, thanks!

> redundancy

Thanks! Will fix.

> > #include <objpak.h>

Thanks for the note. Added a link to the source for that one.

Interesting idea but as others have already pointed out, it has a lot more than just programming languages in it. I understand that the description explicitly points it out but advertising it as a list of "computer languages"/"programming languages" is just plain wrong and misleading.

For faust you have 2015 but it should be 2002.


Thank you for the bug report. Will update.

Numeral systems are a relatively recent addition and I haven't yet built a special template/models for them. Might be more like 7 billion users and all jobs :)

For Fortran I see

fortran-77 pl 1977 fortran-8x pl 1989 fortran-90 pl 1990

but not the earlier Fortran 66 aka Fortran IV and the later standards Fortran 95, 2003, 2008, and Fortran 2018. Numerous Fortran 95 compilers exist, and Cray, gfortran, IBM, Intel, and NAG have implemented much of Fortran 2008, according to http://fortranwiki.org/fortran/show/Fortran+2008+status .

Thank you very much! Made a note to go carefully through the Fortrans and add these popular variants.

It doesn't seem to handle name collisions very well. I'm certain there were other languages called "D" before the Digital Mars one, for example.

One letter language names are particularly overloaded. Definitely an area I can improve. Thank you!

Nitpicky feedback, the PHP page says "Personal Home Page". The meaning was changed to the recursive "PHP: HyperText Preprocessor".

Source: https://www.php.net/manual/en/preface.php

I really wish this list had some built in sortability in the WebUI - there is an immense amount of information on the language detail pages that would be nice to see surfaced on that list.

Ed. Oh it is sortable by the presented fields, it's just a bit un-intuitively communicated via the UI

Any former GEAC systems folks here?

You'll notice the list has ZOPL, but is missing ABL (Automated Banking Language) which ran several banking operations in Canada in the early 80's.

Thanks! Do you have any links to something on ABL? I can't find anything.

Seems odd to think about digging up documents before the era of pdf!

Somewhere buried I probably have an old GEAC-ABL manual, but a quick look didn't uncover anything. Who should I notify if I find something?

ShortCode from 1949 is the first one with a date.


I got to around 1K. You probably have them all, but there could be some in there. Your list is much more useful so I linked to it.

Based on it, jquery is a language lol

It is listed as type library.

... in a table / page called "Languages".

Which also includes thinks like xml, css, csv, abacus, abnf, apacheconf, hcl, apt, bibtex, and git.

Wait until you spot Wordpress in the list, too.

In case you can't find it, c++ is on the list, but under cpp like the file extension.

The name is C++. The extension could be cpp, or it could be C, or cxx, or cc. The C preprocessor is also cpp.

Seems like a lot of work congratulation

BerkeleyDB: Computer language??

Please make this list sortable by the columns. Thank you.

Added. Please let me know if that works or breaks. Thanks for the feedback!

It's odd how you classify numerals as languages. Otherwise, great reference.

abacus-machine computingMachine -2700

babylonian-numerals numeralSystem -2000

roman-numerals numeralSystem -900

attic-numerals numeralSystem -600

greek-numerals numeralSystem -300

Thanks! I found that the development of numeral systems is in many ways similar to the development of programming languages, and the "story" is incomplete without including those in the db. It's a more recent development that I didn't expect.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact