From Layman to Deep Learning Expert | Natural Language Institute

Embracing Singularity


From Layman to Deep Learning Expert

2. Choosing Python

By Victor - 02/jul/2020 #Science and Technology

When I decided to become a computer programmer and deep learning expert, it’s natural that, as a lifelong foreign language enthusiast, the first question I would ask myself was: “What programming language should I learn?”

As I searched this question online, I discovered that programming languages can be higher or lower level in terms of abstraction from computer operations. The lower level a language, the higher performing it tends to be from a machine standpoint, but the more difficult it is for human programmers to use creatively and efficiently. For computer science students and researchers, it may make sense to learn relatively lower-level languages like C[1], since their logic is somewhat closer to how computers actually function and because their speed advantages can be decisive for certain purposes. By contrast, for someone looking to change professions or simply add a skill to their productivity arsenal, learning a very high-level language, such as Ruby, Python, or Visual Basic, may be a more viable and empowering proposition.

I wanted to learn programming for very practical purposes – to get things done. I wanted to be capable of making web applications and software for productivity and applied linguistics at Natural, to organize and automate personal routines, to analyze data at the audit court, to manage my farm more effectively. Clearly, I needed to learn a high-level, multi-purpose programming language.

My initial choice was Ruby. I suppose it came up a lot in my search results as a top language to learn in 2018. It seemed to fit the bill as a general-purpose, very high level and productive language, ideal for a career-switching learner without a computer science or engineering background. I bought a couple of books, including one for kids, in the hopes my 10-year-old daughter would get excited to learn it along with me (which never happened). I began studying the first chapters of two different books but felt uninspired. It probably had more to do with the books than with the language itself; regardless, I think it was fortunate my enthusiasm didn’t take off at that point.

In the meantime, I continued to read about the artificial intelligence revolution and how to become a practitioner. I was concerned to find Ruby scantly mentioned in this burgeoning field, whereas Python came up again and again. I had already begun to invest in Ruby, and it seemed hipper, with its flexible syntax and creative freedom, than Python, with its rigid indentation and one “right way” to do things. Yet further research and talking with a programmer friend convinced me that, if I was serious about deep learning, Python was the way to go. I chose Python for myself and for Natural and haven’t looked back.

I am thoroughly and increasingly happy with my choice. Perhaps some of my satisfaction stems from group confirmation bias, but I have strong reasons to recommend Python to others with similar goals.

First, as mentioned, Python is hands-down the most popular language in machine learning, meaning it is unbeatable in terms of libraries, frameworks, support, and learning resources available to become productive in this field that is changing the world.

Second, Python is versatile. It is often compared to R, a popular language among statisticians, for data science, and for machine learning applications. However, R is not a natural choice for software development, while Python is equally suited to gathering data, analyzing it, training machine learning models, and then deploying the models in integrated software solutions and putting them online. Python makes it easy to whip up some quick code on my laptop to enhance productivity, yet it was recently used by scientists to generate the first picture of a black hole.

Third, Python is an excellent choice for backend web application development. While it allowed two (very smart) interns at Natural to develop and deploy the Institute’s first web app in little more than a month, it also powers the core of YouTube, which relies on over one million lines of Python code to feed five billion videos to viewers each day, and Instagram’s core web framework (Django) is also built on Python.

Fourth, Python, though incredibly powerful, is easy for beginners like me to learn. That is one of the reasons it is increasingly a language of choice in computer science curriculums and specialized courses for non-programmers. This ease of learning stems undoubtedly from the fact that its precursor, the ABC programming language that inspired Python, was explicitly designed as a teaching tool.

The fifth and last reason I love Python has been the most pleasant and biggest surprise to me. It had nothing to do with why I chose Python originally, but it may have a strong impact on my continuing to choose Python in the long term. Python has a strong, welcoming, and supportive community that embodies the ethos of the open source movement. Newcomers are embraced and everyone seems willing to help. There are countless programmers who volunteer their efforts to develop an extremely broad array of useful libraries, not to mention the core developers who maintain CPython[2] itself.

I knew very little about the open source community before starting to learn computer programming in 2018. I have become increasingly impressed by what it represents. While my experience with this community has been through Python, the movement is far broader and includes many programming languages and related technologies. My impression is that open source is not only contributing decisively to world-changing advances happening right now in information technology, but that it is one of the most positive forces for human progress in the world, full stop. That sounds like the subject of a future post …

[1] The concept of a high-level or low-level programming language is relative. C was originally considered a high-level language, since it abstracted away some routines and made coding more human-accessible than assembly languages. Yet today it is contrasted with languages like Ruby, Python, or Java and labeled “low level.”.

[2] Since Python is an open-source language, it can and does have many branches or implementations. The mainstream, reference implementation is CPython, which for most purposes is synonymous with Python.

This publication is the second in the series From Layman to Deep Learning.