What programming languages should aspiring computational linguists learn? Why?


  • 2
    Welcome to Linguistics.SE! "Should" sounds like a subjective thing. People invite various tools specifically because they have different opinions about what "should" be used. Consider rewriting your question by defining your specific needs, then the question may get an objective answer. – bytebuster Jul 11 '17 at 5:03
  • 2
    There is no need to rewrite my question like you suggest because it is a technical and not a philosophical question. Additionally, since I am clearly new to computational linguistics (hence your "Welcome to Linguistics.SE!"), my post asks a very simple and valid question about the field. For example, programmers who want to design websites must/"should" know certain programming languages, while app developers "should" know others in order to succeed in their respective fields. – Rembly Jul 11 '17 at 6:18
  • 2
    Why the downvotes? – Adam Bittlingmayer Jul 11 '17 at 7:48
  • 3
    It's too subjective and, more importantly IMO, far too broad. There are different kinds of computational linguistics, and I doubt someone doing MT at Google has the same needs as a distributional typologist. – WavesWashSands Jul 11 '17 at 7:56
  • 2
    In every site on the network "what is best?" questions aren't allowed. Questions on this site need to be able to be answered objectively. What is the most common would be acceptable. What is the most accessible to non-programmers would probably be okay, especially if it focused on the strength of stuff like tutorials and documentation. What tools are focused on specific tasks would be good too (computational linguistics is a huge field!) Do any of those questions work for you? – curiousdannii Jul 12 '17 at 3:08

Python and C++

In the old days, C/C++ was the language of Moses, Giza etc, and the language of the research pipelines and production infrastructure at Google (and I assume Microsoft) for search, translation, speech recognition, handwriting recognition and so on. fastText is in C++.

Today, the Python ecosystem now has more to offer, both in natural language processing and in machine learning in general, and in serving infra. Dealing with strings is just easier in Python, especially in Python 3.

Most of the major Python libs use Cython, so the implementers know C++, although the consumers need not.

Stanford NLP uses Java.

My approach for answering this pseudo-objectively would be to count the number of libraries or commits with certain keywords in GitHub, questions on SE and so on.

For example, if we search Google Scholar for "NLP" OR "computational linguistics" OR "natural language processing" x:

C++: 705 (2017: 16)
Python: 19,900 (2017: 2,640)
Java: 35,900 (2017: 2,310)

Choosing research papers over lines of code or other metrics is subjective, there are also some idiosyncrasies because these names could refer to other concepts or have synonyms like C. And it will depend which subfield, which company, which region and so on.

That said, it is as important to know technologies and resources as languages. For example, Unicode, ISO codes, file formats, distributed computing, TensorFlow seq2seq, containerisation, AWS, GitHub, StackExchange...

  • 3
    You really shouldn't be answering questions which so blatantly don't meet the site's standards... – curiousdannii Jul 11 '17 at 14:10
  • 8
    @curiousdannii With all respect, all of you experienced users should spend your commenting effort fixing the basically good question of a new user so that it meets the site's standards. – Adam Bittlingmayer Jul 11 '17 at 14:46
  • 1
    @curiousdannii ^As I stated above, totally and completely pathetic. – Rembly Jul 12 '17 at 2:49
  • 1
    I don't understand why you would answer with a single language. Multilingualism is mandatory. – user6726 Jul 14 '17 at 2:00
  • 2
    @A.M.Bittlingmayer The stats in your content favor Java considerably over C++. Yet you title this with "Python and C++". Can you give any justification for choosing C++ over Java (which you seem to have done in the opposite direction)? – Mitch Jul 21 '17 at 23:13

Not the answer you're looking for? Browse other questions tagged or ask your own question.