Introducing Lustre.ai Logo
Lustre.ai Logo

The Slant team built an AI & it’s awesome

Find the best product instantly

Add to ChromeAdd to EdgeAdd to FirefoxAdd to OperaAdd to BraveAdd to Safari
Try it now
4.7 star rating
Lustre.ai illustration
Slant logo
0
Log in • Sign up
Follow
DevelopmentLearning ResourcesProgramming Language

What is the best programming language to learn first?

82
Options 
Considered
4.8K
User 
Recs.
2 mins
Last 
Updated
Things To Consider

Either for hobby or as a real opportunity to find a job, with countless resources on the internet (most of them free), learning a new programming language has never been as easy as it is today. But even with the overwhelming information that’s out there, choosing a programming language to learn can be a daunting task. Especially if it’s the first language that someone is learning.

A good programming language to start with should be one that teaches best practices and common paradigms and designs that can be found on all other languages. Some people may prefer a language that has a clearer syntax, like Python for example others may prefer a language that is more verbose but that teaches a lot on what is happening “under the hood” like C. Languages that have an easier syntax especially have a lot more tutorials and resources to learn for beginners than languages that may be a little more complex as syntax goes.

One should also keep in mind that a programming language is just a tool to be used, and as such every language out there has it’s strengths and weaknesses and is better suited at a certain thing rather than others. So for example, JavaScript is essential to anyone who wants to learn web development, C++ is widely used by game developers worldwide, Java is needed for Android development and so on. So another thing to keep in mind is the area where you want to focus and that also should influence your choice.

See MoreSee Less
Related Questions
Activity
Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Have feedback or ideas?
Discord logoJoin our community
on Discord
Ad

The Best 1 of 76 OptionsWhy?

Best programming language to learn firstPriceCurrent stable versionPlatforms
93
Python
Free3.9.1Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
75
Pascal / Object Pascal
---
74
C
FREEC'18-
73
Go
Free1.17Windows, Linux, Mac etc.
72
Lua
Free-Windows, Mac, Android, Linux
See Full List
93
The Best

Python

My Recommendation for Python

My Recommendation for Python

Add Video or Image
All
59
Experiences
13
Pros
24
Cons
21
Specs
thermoplastics
Slimothy
Tom Raleigh
Top Pro
•••

Lots of tutorials

Python's popularity and beginner friendliness has led to a wealth of tutorials and example code on the internet. This means that when beginners have questions, they're very likely to be able to find an answer on their own just by searching. This is an advantage over some languages that are not as popular or covered as in-depth by its users. See More
Endi Sukaj
Carson Wood
Top Con
•••

Not good for mobile development

You can use frameworks like Kivy, but if your ultimate goal is to write mobile apps Python may not be the best first choice. See More
ComposedKingu
ComposedKingu's Experience
god its so awful. never use this. its whitespace is significant(why???), it doesn't teach you anything, it has no private or const members, and even worse: IT DOESN'T USE SEMICOLONS!? WHO THOUGHT THIS WOULD BE A GOOD IDEA? I HATE IT! GOD I HATE PYTHON! EVERYONE SHOULD HATE PYTHON! So I do not recommend it. Thanks for watching my Ted talk. See More
Specs
Current stable version:3.9.1
Platforms:Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
GZipped size:22.5MB
Typing discipline:Dynamically typed
See All Specs
Slimothy
Tom Raleigh
Stuart Kearney
Top Pro
•••

Easy to get started

On top of the wealth of tutorials and documentation, and the fact that it ships with a sizeable standard library, Python also ships with both an IDE (Integrated Development Environment: A graphical environment for editing running and debugging your code); as well as a text-based live interpreter. Both help users to get started trying out code immediately, and give users immediate feedback that aids learning. See More
ModestCaerus
VigorousTiberinus
Top Con
•••

Inelegant and messy language design

The first impression given by well-chosen Python sample code is quite attractive. However, very soon a lack of unifying philosophy / theory behind the language starts to show more and more. This includes issues with OOP such as lack of consistency in the use of object methods vs. functions (e.g., is it x.sort() or sorted(x), or both for lists?), made worse by too many functions in global name space. Method names via mangling and the init(self) look and feel like features just bolted on an existing simpler language. See More
Deuxis
Deuxis's Experience
Pleasant to use but terrible at teaching, it's so abstracted that learning Python is more like learning magic spells than actually understanding what the computer is doing. Only dynamic data types are also a gigantic no-no for a teacher. Also, Python is slow and pretty bad at multithreading. See More
Ray
Alan
Top Pro
•••

Active and helpful community

Python has an active and helpful community, such as the comp.lang.python Google Groups, StackOverflow, reddit, etc. See More
Joseph Bigler
Monika
CAB
Top Con
•••

Hard to debug other people's code

As the structure of Python code is based on conventions many developers are not following them and so it is difficult to follow/extract the design of not trivial application from the code. While this is a con, I see it in other languages as well. It seems to depend on the programmer. Most people don't learn conventions first, they just start programming. Unless you work for someone who insists you follow the conventions, you will probably go with what you like. You might never look at the conventions. See More
Kevin Ball
Kevin Ball's Experience
Python is an excellent first language. It has wide applicability, is quick to get to productivity, and is a c-like language that is similar enough to other c-like languages that moving on to new languages afterwards will be straightforward. See More
Sunil Arora
Slimothy
Stuart Kearney
Top Pro
•••

Clear syntax

Python's syntax is very clear and readable, making it excellent for beginners. The lack of extra characters like semicolons and curly braces reduces distractions, letting beginners focus on the meaning of the code. Significant whitespace also means that all code is properly and consistently indented. The language also uses natural english words such as 'and' and 'or', meaning that beginners need to learn fewer obscure symbols. On top of this, Python's dynamic type system means that code isn't cluttered with type information, which would further distract beginners from what the code is doing. See More
Nobuyuki
Top Con
•••

Language fragmentation

A large subset of the Python community still uses / relies upon Python 2, which is considered a legacy implementation by the Python authors. Some libraries still have varying degrees of support depending on which version of Python you use. There are syntactical differences between the versions. See More
Kaleb McKinney
Kaleb McKinney's Experience
Python was my first language, and is still my favorite. It is very simple, and can do so much! See More
JM80
gilch
Ray
Top Pro
•••

Can be used in many domains

Python can be used across virtually all domains: scientific, network, games, graphics, animation, web development, machine learning, and data science. See More
ExcitedThoon
Top Con
•••

Worst language design ever

Instead of sticking to a certain paradigm, the original writer of the language couldn't make up his mind, and took something from everywhere, but messing it up as he went by. This is possibly one of the worst balanced languages ever. People who pollute their mind with Python and think it's the next best thing after sliced bread, will have to un-learn a lot of garbage 'pythonesque' habits to actually learn how to program. It's not because the academic world uses it a lot, that it's a good language. It says something about the inability of the academic world to write decent code, actually. See More
PersonableChiminigagua
PersonableChiminigagua's Experience
python was the programing language that I learned, and it's good to get your feet wet with programming. See More
Laura Kyle
Slimothy
Tom Raleigh
Top Pro
•••

Comes with extensive libraries

Python ships with a large standard library, including modules for everything from writing graphical applications, running servers, and doing unit testing. This means that beginners won't need to spend time searching for tools and libraries just to get started on their projects. See More
Joseph Bigler
Endi Sukaj
DecentWerethekau
Top Con
•••

Might not be very future-proof

Lots of features that will probably be crucial as time goes (good support for parallelism for example) are missing or are not that well-supported in Python. Since 2.x and 3.x still exist, be prepared to switch if something makes 3.x take off in the future. See More
CheerfulSreng
CheerfulSreng's Experience
scientific programming See More
Ray
Monika
Amir Zamani
Top Pro
•••

Cross-platform

Installs and works on every major operating systems if not already installed by default (Linux, macOS). See More
Monika
Peter Carter
Top Con
•••

Multi-threading can introduce unwanted complexity

Although the principals of multi-threading in Python are good, the simplicity can be deceptive and multi-threaded applications are not always easy to create when multiple additional factors are accounted for. Multi-thread processes have to be explicitly created manually. See More
KindAnshar
KindAnshar's Experience
Things that require some thing special, I might rethink and choose the best tool or language for that particular job other than that Python is my go to development tool for anything personal. See More
Slimothy
Stuart Kearney
Tom Raleigh
Top Pro
•••

Good documentation

The Python community has put a lot of work into creating excellent documentation filled with plain english describing functionality. Contrast this with other languages, such as Java, where documentation often contains a dry enumeration of the API. As a random example, consider GUI toolkit documentation - the tkinter documentation reads almost like a blog article, answering questions such as 'How do I...', whereas Java's Swing documentation contains dry descriptions that effectively reiterate the implementation code. On top of this, most functions contain 'Doc Strings', which mean that documentation is often immediately available, without even the need to search the internet. See More
gilch
Endi Sukaj
Marc Telesha
Top Con
•••

The process of shipping/distributing software is reatively complicated

Once you have you program the process of having a way to send it to others to use is fragile and fragmented. Python is still looking for the right solution for this with still differences in opinion. These differences are a huge counter to Python's mantra of "There should be one-- and preferably only one --obvious way to do it." See More
Tom Barron
Tom Barron's Experience
A decade of using Python professionally See More
Endi Sukaj
Massimiliano Lambertini
Top Pro
•••

Very similar to pseudo-code

When learning Computer Science concepts such as algorithms and data structures, many texts use pseudo-code. Having a language such as Python whose syntax is very similar to pseudo-code is an obvious advantage that makes learning easier. See More
VigorousTiberinus
Top Con
•••

Limited support for functional programming

While Python imports some very useful and elegant bits and pieces from FP (such as list comprehensions, higher-order functions such as map and filter), the language's support for FP falls short of the expectations raised by included features. For example, no tail call optimisation or proper lambdas. Referential transparency can be destroyed in unexpected ways even when it seems to be guaranteed. Function composition is not built into the core language. Etc. See More
GraciousChronos
GraciousChronos's Experience
Best programming language See More
Ray
Zhenyu Yu
Top Pro
•••

Has many libraries for scientific computing, data mining and machine learning

Python is commonly used in data science and has many libraries for scientific computing, such as numpy, pandas, matplotlib, etc. See More
Joseph Bigler
Laura Kyle
Ken Demarest
Top Con
•••

Speed can matter

Python, like many interpreted and untyped languages, is fairly slow compared to compiled languages like C, C++ or Java. Sometimes this won't matter, but when it does you're talking about twenty times slower than C/C++ and ten times slowed than Java. You need to have a plan for what you will do if it is too slow. See More
AmbitiousNinmena
AmbitiousNinmena's Experience
20 years professional programming with Python and other languages. See More
Ray
Stuart Kearney
Paddy3118
Top Pro
•••

Supports various programming paradigms

Python supports three 'styles' of programming: Procedural programming. Object orientated programming. Functional programming. All three styles can be seamlessly interchanged and can be learnt in harmony in Python rather than being forced into one point of view, which is helpful for easing confusion over the debate amongst programmers over which programming paradigm is best, as developers will get the chance to try all of them. See More
Izem Lavrenti
apokryfos
Top Con
•••

Does not teach you about data types

Since Python is a dynamically typed language, you don't have to learn about data types if you start using Python as your first language. Data types being one of the most important concepts in programming. This also will cause trouble in the long run when you will have to (inevitably) learn and work with a statically typed language because you will be forced to learn the type system from scratch. See More
NiceEnmerkar
NiceEnmerkar's Experience
Python is a simple and easy to learn because of its clear syntax and readability that's why it reduces the cost of program maintenance. https://www.simpliv.com/search/sub-category/python See More
Paddy3118
Top Pro
•••

Advanced community projects

There are outstanding projects being actively developed in Python. Projects such as the following to name a random four: Django: a high-level Python Web framework that encourages rapid development and clean, pragmatic design. iPython: a rich architecture for interactive computing with shells, a notebook and which is embeddable as well as wrapping and able to wrap libraries written in other languages. Mercurial: a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface. PyPy: a fast, compliant alternative implementation of the Python language (2.7.3 and 3.2.3) with several advantages and distinct features including a Just-in-Time compiler for speed, reduced memory use, sandboxing, micro-threads for massive concurrency, ... When you move on from being a learner you can still stay with Python for those advanced tasks. See More
Tyler
Top Con
•••

Abstraction to the point of hinderance

Python is abstracted far enough that if it's your first language, it will be harder to pick up lower level languages later versus going the other direction. See More
Stu
Stu's Experience
I have been using python for about 6 months. My first programming language that I am half good at. I also tried C#. I found Python much easier to learn and can be used for many things. See More
Joseph Bigler
Monika
Ünal Berke TOPÇU
Top Pro
•••

It's really simple

It's very simple for understanding how programming works. If you don't like programming in Python, you probably won't like programming. It is a good way to find out with little investment. If you like, it is a great language. I wouldn't look for a language that has everything you eventually need to know in programming, such as static typing, in my first language. It should be easy to learn. You can pick up the hard stuff later if you tackle C or C++ or assembler. It will make learning them much easier. If you start with them, you might quit programming due to the difficulty of learning. See More
Monika
Alex
HelpfulAstghik
Top Con
•••

It is best suited for scripting, but so are many other languages

i.e. running js as a script in a node is trivial. Even languages that were not meant to run as a script are easy to use as a scripting language with just a .sh file. See More
EnterprisingLofn
EnterprisingLofn's Experience
For non-CS crowd, this is the no-brainer place to start if you are close to analytics, data science, visualisations, need motivation to learn to code. See More
Laura Kyle
Slimothy
Stuart Kearney
Top Pro
•••

Easy to find jobs

Python's popularity also means that it's commonly in use in production at many companies - it's even one of the primary languages in use at Google. Furthermore, as a concise scripting language, it's very commonly used for smaller tasks, as an alternative to shell scripts. Python was also designed to make it easy to interface with other languages such as C, and so it is often used as 'glue code' between components written in other languages. See More
SensibleHermodr
Top Con
•••

Version Confusion with V2.x and V3.x

See More
Laura Kyle
Slimothy
Stuart Kearney
Top Pro
•••

One right way to do things

One of the Guiding Principles of Python is that there should be only one obvious way to do things. This is helpful for beginners because it means that there is likely a best answer for questions about how things should be done. See More
Joseph Bigler
Laura Kyle
Martin Hradil
Top Con
•••

Significant whitespace

While proper formatting is essential for any programmer, beginners often have trouble understanding the need and lack the discipline to do it. Add to that all those editors that randomly convert N spaces (usually 8) to tabs and you get an instant disaster. You may need to find yourself an editor/IDE you like and carry it with you on a thumb drive, which isn't a bad idea anyway. See More
François Delpierre
Top Pro
•••

Interpreters for JS, Microtontrollers, .Net , Java & others

Python is not limited to just be cross platform. It goes far beyond all high level languages since it can run on top of several other frameworks & architectures : Examples of interpreters: Standard (PC Win/Lin/Mac, ARM, Raspberry, Smartphones): CPython usually, but some more specialized for smartphones: Kyvi, QPython, ... Web Browser JS : Brython, PyJS, .Net : IronPython Java: Jython Microcontrollers with WiFi like ESP8266 or ESP32: MicroPython Can be statically compiled (instead of interpreted) with Cython. (Do not mix up with cPython) With python, you're sure your code can run (almost) everywhere, from 2€ computers to the most expensives. So, for instance, with Jython you can access the Java libraries with Python language. See More
hellopeach
Top Con
•••

Too opinionated for a general-purpose programming language

While it's a good language to learn and use after you have mastered a couple of other less rigid programming languages, it's definitely not good for first-time learners. Both the language itself and its community have made it quite clear that you should do everything the "Pythonic way" to get the best results, that it feels more like an opinionated framework instead of a general-purpose programming language, which means if you are a first-time learner and getting too "tuned" to the "Pythonic way" it will be much harder for you to learn other less-opinionated languages compared to the other way around. Like any programming languages and/or frameworks, I'd recommend first-time learners to learn less opinionated ones first to open up your mind, then learn some of the more opinionated ones to increase productivity for specific fields of works. After all, programming languages are just some utilities for the human mind to interface with the computers, and there are more suitable tools for different tasks, and you should master the "Pythonic way" (after you already have adequate experience in computer programming) instead of locking your mind too close to the "Pythonic way" as a first-time learner. See More
Ray
Chloe Montanez
Michael white
Top Pro
•••

Has features of both high and low level language

It is somewhere between C and Java. See More
Joseph Bigler
Heliophanus
Top Con
•••

Unflexible userbase

You will be expected to rigidly stick to the coding practices and to do everything by-the-numbers. One of the most common complaints I heard from people who left Plone, which is Python based, to Drupal, which is PHP based, is the community is more like a frat house than a community. If you look for help, make sure you follow the rules of whatever type of group you are requesting help from. See More
HeroSelecter
Top Pro
•••

Easy to learn, More to Go

It is very easy to learn and it has community support and many categories available. See More
Monika
HycrosxGladeum
Top Con
•••

Bad for games

Python has a lot of frameworks like pygame, but exporting the game is hard and building files like .exe gets very large and have a bad performance on bad computers. See More
Deuxis
Slimothy
Stuart Kearney
Top Pro
•••

Good introduction to data structures

Python's built-in support and syntax for common collections such as lists, dictionaries, and sets, as well as supporting features like list comprehensions, foreach loops, map, filter, and others, makes their use much easier to get into for beginners. Python's support for Object Orient Programming, but with dynamic typing, also makes the topic of Data Structures much more accessible, as it takes the focus off of more tedious aspects, such as type casting and explicitly defined interfaces. Python's convention of only hiding methods through prefacing them with underscores further takes the focus off of details such as Access Modifiers common in languages such as Java and C++, allowing beginners to focus on the core concepts, without much worry for language specific implementation details. See More
Monika
HealthyBarnumbirr
Top Con
•••

Not a serious coding language

If you consider it your first language, better pick Julia! See More
Monika
Ken Colton
Top Pro
•••

Import Turtle

Do something visually interesting in minutes by using the turtle standard library package. https://docs.python.org/3.6/library/turtle.html Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an import turtle, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise. Turtle can draw intricate shapes using programs that repeat simple moves. Example Turtle Star Drawing from turtle import * color('red', 'yellow') begin_fill() while True: forward(200) left(170) if abs(pos()) < 1: break end_fill() done() See More
IntelligentAres
Top Con
•••

Moving large blocks of code in whitespace sensitive languages is scary

Quoting inventor of the V language: "V's syntax is cleaner with fewer rules. Lack of significant whitespace improves readability and maintainability of large code bases and makes generating code much easier. From my experience of working with a huge Python code base, moving large blocks of code in whitespace sensitive languages is scary." See More
Jason
Top Pro
•••

Includes pygame library

Want to start game development? No problem! Using pygame open-source library you can fast begin creating games without worrying about pointers or undefined behaviors which they exists in C/C++. See More
Alexey Cherkaev
Top Con
•••

Assignment

Heavily relies on assignment, with no distinction between defining the variable and assigning the value. This makes it necessary to introduce rather complex environmental model of computation. See More
Top Pro
•••

Mobile versions

Mobile versions are available but can be difficult to find. Examples for android are pydroid and qpython See More
gilch
Top Pro
•••

Static typing via mypy

Python's syntax supports optional type annotations for use with a third-party static type checker, which can catch a certain class of bugs at compile time. This also makes it easier for beginners to gradually transition to statically typed languages instead of wrestling with the compiler from the start. See More
Slimothy
Top Pro
•••

Best chances of earning most money

According to Quartz, Python programming skills on average earn $100,000 per year. Closely followed by Java, C++, JavaScript, C, and R with $90,000 per year and above. See More
HideSee All

75 Other Options Considered

75

Pascal / Object Pascal

My Recommendation for Pascal / Object Pascal

My Recommendation for Pascal / Object Pascal

Add Video or Image
All
37
Experiences
8
Pros
24
Cons
4
Specs
Mr Bee
actionless
Top Pro
•••

Understanding of basics

Because of the verbosity and easy syntax, Pascal language is relatively easier to be learned and understood, even for someone who has no programming knowledge. It's said that Pascal code —if written well— is like reading pseudo code. See More
cdt5050
dbohdan
actionless
Top Con
•••

Niche language

Most use of this language will be found in jobs supporting legacy code. It will be hard to find things to do with this language outside of that niche. See More
Gerhard Eichhorn
Gerhard Eichhorn's Experience
Turbo Pascal, from Delphi1.0-Tokio See More
Specs
Price:Free (FreePascal, GNU Pascal), varying price (Delphi)
Standard:ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal
Aubrey
Mr Bee
Top Pro
•••

Cross platform

Pascal development tools are available almost on every available platform, especially using Free Pascal. Pascal language is available on desktop like Mac, BSD, Linux, Windows, Solaris, etc.; on mobile like iOS, Android, etc.; also on managed environments like Java Virtual Machine (JVM) and .Net/Mono framework . There are even some Pascal to JavaScript transpilers such as Smart Pascal, so you can write client side web app using Pascal as well, if you really want to. See More
John Parsons
Ray
Mr Bee
Top Con
•••

No up-to-date version of language standards

In 1983, and update in 1990, the language was standardized with two standards: ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal. However, Object Pascal extensions to the language have no official standards but in 1993, a draft proposal for object oriented Pascal standard was re; for review purposes only. There are no standards for modern features and enhancements, thus various Pascal dialects like Delphi or HP Pascal has their own enhancements and features. See More
Marcus Fernström
Marcus Fernström's Experience
I use it to create all sorts of things. From CLI tools, server software, build tools, desktop utilities, REST APIs, GUI software. It's allowed me to create things very quickly, deploy to many platforms, and it compiles to native executable code, so no need to bundle runtime engines or require users to install other things. See More
Thomas
actionless
Top Pro
•••

Easy

Pascal / Object pascal was used in schools during the 2000's to teach kids the basics of object oriented programming. See More
ExcitedThoon
Top Con
•••

Unnecessary heavy syntax

Begin.. end. Pascal would have been great with curly braces.. but then again, that's what C is for. It's an academic language which was used in the past, but not much anymore today. See More
Henrik Byström
Henrik Byström's Experience
I learned Pascal before I learned C and C ++ and Ada, it's has its advantages when you as a beginner want to learn programming, because the code is very similar to pseduocode and enforces good programming practice. With Pascal you can build good desktop and system applications and learn the advantages of strong typing and build robust and stable applications, before you will take the route and start to program C / C ++, Java and C # or Ada and more complex programming projects. See More
Ray
John Parsons
Jesper Dam
Top Pro
•••

Clear syntax

Pascal's syntax is clear and concise, for example: procedure test(); begin DoSomething(); end; See More
LivelyLiTieguai
Belle
CaringChemosh
Top Con
•••

All variables, types, constants and functions must be declared at the beginning of the code

Nope See More
JovialAdephagia
JovialAdephagia's Experience
This langauge is really old. I dont know any software which is using this language. See More
CaringChemosh
Thomas
Top Pro
•••

Fast compilation

The compiler is fast, really fast. Compared to C/C++, the delphi compiler is designed to compile a decent sized desktop application in seconds rather than minutes. See More
Cosmo Myzrail Gorynych
Cosmo Myzrail Gorynych's Experience
It might be a good language to start with (it is not), but sticking to it will close tons of opportunities for a developer and eat a good portion of their lifespan. Instead, teach students with languages they can rely on and use in their professional life, and those that reflect modern tendencies and reply to contemporary agility needs, but not 1980-ish standards. See More
Mario Ray Mahardhika
Top Pro
•••

Enforces good programming practice

Numerous strong compile time checks with optional runtime checks ensure one doesn't do stupid things and even when one does (because the compiler can't prove it at compile time), the binary will check and report it at runtime. Correct modular programming implementation with proper namespacing, no file inclusion hack. See More
ResourcefulAnhur
ResourcefulAnhur's Experience
The syntax of the Delphi/Object Pascal language is so clear, easy to write and read, with the integrated UI library and form designer you can design GUI programs so quickly! And it doesn't get in the way while let's you be productive. See More
Ray
Peter Dunne
IntuitivePatollo
Top Pro
•••

Easy GUI creation

Visual Basic may have predated Delphi but Delphi was the ground breaking visual designer which set the standards expected today by most GUI developers. Its rich component set was well designed, structured and extensible, it even has the ability to display live data from the attached database in its data controls. See More
Ryan Johnson
Ryan Johnson's Experience
Excellent teaching tool. Very mentally-friendly language. Better than C. Excellent development environment. Good tutorials. Lots of platforms supported. See More
Mr Bee
Bryan
actionless
Top Pro
•••

Tons of academic reading

Being known as the programming language for education, especially in the 90's, there many academic reading and tutorials available on the internet. See More
MightyKyrbas
MightyKyrbas's Experience
I used Turbo Pascal to write a large library of code that was used as a base for our organization. We developed the code over 5 years and successfully taught TurbonPascsl to all of our developers. I had learned and developed applications in C, Fortran and Basic before learning Pascal. See More
Thomas
Top Pro
•••

Still active

From the early roots of Pascal, Delphi has been developed and is still actively supported. It is used in many desktop applications today, and even supports multi platform coding. See More
Jon Aasenden
Top Pro
•••

Language depth

Object Pascal is being used to write custom kernels (Ultibo) and operating-systems for various ARM boards. So the way you work with the code scales from low-level to pure OOP high-level. Object Pascal has the same level of depth that you find in C/C++ but with added productivity. See More
Marcus Fernström
Top Pro
•••

Incredible GUI design tools

Lazarus and Delphi are both incredible GUI design tools, making rapid development a reality. Making changes to a GUI doesn't mean switching tools or waiting for things to load, it's right there as part of your core tools. See More
Simona
CromulentFides
Gerhard Eichhorn
Top Pro
•••

Dynamic evolution of language

Object Pascal language still evolving and being updated by Delphi (Embarcadero) and Free Pascal team (Lazarus). See More
Paolo
Edgar Fernando Rodriguez Pacheco
Top Pro
•••

Assembler Code and DLL/SO creation

You can put Assembler code in Intel or AT&T formats, to achieve great results of speed and accuracy. It is possible to create Dynamic Link Libraries or their equivalent in Unix-like systems so it's relatively easy to use and powerful. See More
Paolo
BraveElegua
Top Pro
•••

Well balanced for desktop development

For desktop development, Delphi is productive, the code is easy to understand, compilation speed is blazing, and it produces well performing applications that are easy to deploy. The perfect balance between C# and C++. See More
Bert Visscher
Andrea Terenziani
Top Pro
•••

Flexible

Using the Free Pascal Compiler (the main Pascal distribution) you can code in a language that can be procedural and imperative now, but it can became object-oriented simply adding a directive at the start of the source See More
Mario Ray Mahardhika
Top Pro
•••

Rich existing libraries

Both shipped with implementations and spread all over the web. Both natively written or bindings to libraries written in other languages. Typically to build non-trivial applications there's no need to surf the web as many things are implemented already. Streaming, output templating, socket & networking, web, database, image manipulation, high performance graphics, (de)compression, (de|en)cryption, regex, unit testing, json manipulation, google API, indexing, multithreading, external process management, the list just goes on and on! See More
Peter Dunne
Top Pro
•••

Extensive third party libraries

There are large collections of third party components, many free which enable developers to add wide ranging and complex functionality to their code with ease See More
CaringChemosh
Top Pro
•••

Fast execution

The compiler generates fast and optimized code. No stop-the-universe garbage collection. See More
ConsiderateShaushka
Top Pro
•••

Automatic Memory Management

The new Delphi compilers are powered by Automatic Reference Counting to ease development. See More
Gerhard Eichhorn
Top Pro
•••

Excellent Database development

See More
Marcus Fernström
Top Pro
•••

Available on a ridiculous number of platforms

FreePascal is available on/for Intel x86 (including 8086), AMD64/x86-64, PowerPC, PowerPC64, SPARC, ARM, AArch64, MIPS and the JVM. Supported operating systems include Linux, FreeBSD, Haiku, Mac OS X/iOS/iPhoneSimulator/Darwin, DOS (16 and 32 bit), Win32, Win64, WinCE, OS/2, MorphOS, Nintendo GBA, Nintendo DS, Nintendo Wii, Android, AIX and AROS. See More
Gerhard Eichhorn
Top Pro
•••

Component based (reusability, decoupled, rich design architecture)

See More
Endi Sukaj
Semantyx
Top Pro
•••

Suitably close to modern languages, without the pitfalls

It was developed as a teaching language and it shows. No syntax pitfalls and gently encourages good style. See More
ResoluteKullervo
AmbitiousHonos
Top Pro
•••

Reliable language and code base

Most code from the Turbo Pascal days in the 80s still compiles, yet the language has since been adapted and extended with modern concepts, introducing OOP and interfaces, exception handling, native Unicode support, anonymous methods, generics, ARC and more. See More
HideSee All
74

C

My Recommendation for C

My Recommendation for C

Add Video or Image
All
39
Experiences
5
Pros
15
Cons
18
Specs
Jonathan
Slimothy
Stuart Kearney
Top Pro
•••

Understanding of computers

Learning C forces you to grapple with the low-level workings of your computer (memory management, pointers, etc.) in ways that the other languages abstract away. Without an understanding of these low-level aspects of computer programming you will be limited if you try to develop an application that needs to run in a memory or performance constrained environment. Other languages like Python can obscure a lot of details, so your foundation may be weaker. See More
depp
Top Con
•••

Languages is full of corner cases and undefined behaviors

Undefined behavior in a program can cause unexpected results, making it hard to debug. With UB, program behavior may vary wildly depending on optimization settings. There are many cases that invoke UB, such as signed overflow, invalid dereferences, large integer shifts, uninitialized variables, etc. These serve to frustrate novice programmers when they could be learning other concepts. See More
Chuck
Chuck's Experience
The syntax of so many modern languages seems to trace back to C. It almost perfectly rides the edge between high-level and low level languages, so it's a good way to understand how code actually compiles and executes. I think it's an essential building block for learning any other language. See More
Specs
Current stable version:C'18
Standard:ISO/IEC 9899:2011/Cor 1:2012 or C11
Typing discipline:static
Paradigm:imperative
See All Specs
Endi Sukaj
Top Pro
•••

Helps with learning other languages later

A lot of languages used in the industry have a C-like syntax (C++, Java, Javascript, C#, PHP) and starting with C will help new developers to be familiar with it's syntax and by extensions with the syntax of many popular languages. See More
Deb
Top Con
•••

Requires memory management

Learning programming is already hard enough when you don't have to worry about memory leaks. See More
OrganizedFengMeng
OrganizedFengMeng's Experience
If you understand C/C++ you will have an easier understanding of any other language because they are usually written in C/C++ See More
Slimothy
Michael Kehoe
Top Pro
•••

Industry standard

C is the industry standard programming language, moreover, it is the most popular programming language to use. C is the language used for most Windows, UNIX and Mac operating systems. See More
Endi Sukaj
Laura Kyle
Inside System
Top Con
•••

C will require you to learn concepts too advanced for most beginners

While other programmers will learn algorithms and structures and will do magic tricks and awesome applications, you will learn trash info that you should know maybe after 5-7 years experience in software development, not earlier. It's like going the first time as a seven year old kid to first school class, and your teacher tells you to learn you about Discrete Math, without basic math and how to do 2x2. If you wish to be a really good programmer, C for sure will be in your portfolio, but not as a first language, and this programming language is used only for very hard and very limited tools which require a lot of professional skills from the programmer. See More
IndustriousSisyphus
IndustriousSisyphus's Experience
Some people say that you need to understand C to be a programmer, which I would disagree with. I know many very talented people who have started with other languages and make good products. Additionally, this language is best for people who want to learn how computers work, not people who want to make something complicated quickly. However, understanding C can make learning other languages much easier, as understanding C helps you understand what is going on behind the scenes in higher level languages. See More
Paolo
Slimothy
cdt5050
Top Pro
•••

Must-have

Capability to program in C is greatly appreciated in developers, creates an image of competency, and many programmers will learn it at some point in their careers. See More
Buster Blue
Laura Kyle
Garrett Oreilly
Top Con
•••

Steep learning curve

While the language compliments knowledge of computer components very well, and gives a deeper understanding, it is also quite difficult to learn, and to use correctly, especially without aforementioned knowledge. See More
LovelyConsus
LovelyConsus's Experience
Difficult to start with, but very enlightening once I understood the language. I would still recommend C++ over C. See More
John Parsons
Endi Sukaj
Petrus Laredes
Top Pro
•••

Portable

C is portable between most hardware. Generally a C compiler is made for any new architecture, and already exists for existing architectures. C is portable between all operating systems (Windows, UNIX, Mac, etc.) and only needs a program to be recompiled to work. This allows anyone on any operating system to learn about the language and not be held back by intricacies of their operating system. With this said, C's portability these days is not quite what it used to be. Much of said portability relies on the POSIX standard in particular, and as time passes, the compliance of a given system with that standard is becoming less certain; especially in the case of Linux. Most things will still be portable (or at least emulatable) between Windows, Linux, and FreeBSD for example; but you will at times need to make use of platform-specific support libraries and APIs as well. See More
Laura Kyle
Michael Murphy
Top Con
•••

Does not support modules; header file annoyances

Header files are a poor man's implementation of modules. Modern programming languages make use of modules which eliminate the need for C includes and header files and the many issues caused by them, such as the complete lack of dependency checking. Header files often contain even more include statements that point to other header files which also point to even more which drastically increases compile time. Modules only have to be compiled once, and when importing those modules into your software project, you only have to pull in the module that you are using, which is often times already precompiled. This way, the compiler knows exactly what it needs before beginning to compile your project and can automatically compile the few dependencies it needs in advance rather than recursively compiling every header file it runs across as in C. See More
ThoughtfulPrometheus
ThoughtfulPrometheus's Experience
good See More
thermoplastics
Svjatoslavs Krasnikovs
Top Pro
•••

Low level of abstraction

While higher level languages languages like Java and Python provide possibilities to be "more expressive" per line of code, it's much more convenient to start with "less efficient" (get me right) language, in order to get initial concepts of how things behave at lower level. Actually C is a good starting point moving to both higher and lower levels of abstraction, the good example here would be learning C before Assembler, as for general use the Assembler quite hard to understand due to low level of its abstraction (like getting the understanding on how loops work in C before trying to implement them on Assembler). See More
Endi Sukaj
Michael Murphy
Top Con
•••

Lack of support for first class strings

C does not support the string type, nor does it support UTF-8 strings that modern languages are employing today. Instead of strings, C makes use of the *char type which is a pointer to a character array. See More
Slimothy
Timothée Poisot
Top Pro
•••

Teaches good practices

Writing in C will require you to understand how things are done. C implies using and understanding the fundamentals. Learning a higher-level language after is much easier. See More
Laura Kyle
Alexey Cherkaev
Top Con
•••

Low-level

Depending on the purpose this can be either a pro or a con. If the task is to learn how to program, low-level of C will impend learning important concepts. Furthermore, C is rather limited in ways of building abstractions. "Low-levelness" of C can be a pro feature in learning system programming. See More
Paolo
EncouragingBeag
Top Pro
•••

The king of languages, imitated, extended but never equalled

Made of a small set of keywords and rules, only your imagination is the limit. Above all, when it comes to 'pro' programming, C is the only one to rely on. See More
Laura Kyle
Michael Murphy
Top Con
•••

Arrays are not first class objects

When an array is passed to a function, it is converted to a pointer, even though the prototype confusingly says it's an array. When this conversion happens, all array type information gets lost. C arrays also cannot not be resized, which means that even simple aggregates like a stack are complicated to implement. C arrays also cannot be bounds checked, because they don't know what the array bounds are. See More
Emma
Top Pro
•••

More control over the code

See More
John Parsons
Top Con
•••

Undefined behaviors and weak limited type safety

Subtle errors can render the entire program "undefined" by the complicated C standard. The standard imposes no requirements in such cases. Thus C compiler is free to ignore the existence of such cases and Bad Things are prone to happen instead. Even experts can't reliably avoid undefined cases in C, so how can beginners be expected to do so? C allows for non-type safe operations such as logic errors, wild pointers, buffer overflow, etc. UB and type safety issues create a large number of bugs and security vulnerabilities. See More
teadan
Samuel Cherukutty
Top Pro
•••

C is simple with lesser rules than any other language

C is standardized and it is the go-to language when you have to speed things up. See More
Kevin Groat
Top Con
•••

The need for C developers in the current market is very low, and trending downward

Older languages, like C, are no longer in their hay day. Even if you do learn it as your first language, you are only setting yourself up to need to learn another language in the long run. If you want a skill that you can not only learn from, but also potentially build a career on, C should not be your first choice. See More
Monika
John Parsons
Top Pro
•••

Portable between CPU architectures

C was designed to be independent of any particular machine architecture, and so with a little care, it is easy to write "portable" programs (see here). By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language like operating systems or small embedded systems. See More
Simona
CromulentFides
Top Con
•••

Other languages can do it easier or better

There are languages like Rust, Object Pascal, D, Golang, Vlang, Odin, Zig, Jai, etc... that can be used instead. The other languages are easier to understand, use, and/or about as fast. See More
Tyler
Top Pro
•••

Basic concepts can be applied to accelerate learning any other language

You can easily pivot knowledge learned here and apply it to almost every other language. See More
Endi Sukaj
Laura Kyle
Michael Murphy
Top Con
•••

Completely lacks type safety

The C standard library is not type safe, and the language itself does not promote type safety built into the language, which leads to error-proneness of the language. If anything, it would be recommended that those interested in C to instead put their time in D, which actually includes a complete copy of the C standard library rewritten to be fully type safe. See More
hyphae
Top Pro
•••

If you can't grok C you should not be a professional programmer

It sets an early bar that if you can't hurdle you might as well do something other than programming and not waste any more of your time. See More
Laura Kyle
Michael Murphy
Top Con
•••

Isn't truly portable or cross platform

The C programming language is not portable to other operating systems, and even different compilers, because the C language does not provide any reference cross platform libraries or compilers. Different platforms and compilers provide their own implementation of the C standard library which may not be compatible with the implementation in another compiler or platform. Without cross platform libraries and tools, one cannot state that C is portable. This is in stark contrast to modern programming languages that provide their own cross platform libraries and compilers, such as D, Go and Rust. See More
teadan
LoveableMaui
Top Pro
•••

Easy to drop down to assembly

Sometimes you really need to program directly in assembly. C’s ABI and common compiler extensions make this a piece of cake. See More
Zack H
Laura Kyle
Michael Murphy
Top Con
•••

Only offers basic support for source code split into multiple files

Modern programming languages are capable of compiling split source code files by concatenating them together efficiently at compile time before compiling them. However, C requires the developer to resort to messing with header files and makefiles to get similar functionality. See More
Chuck
Top Pro
•••

Ubiquitous

There is a C compiler available for probably every computer system in existence today. See More
Laura Kyle
Michael Murphy
Top Con
•••

Compiles procedurally rather than intelligently

In the same manner that C recursively compiles header files ad infinitum without any sort of dependency checking, C source code is also compiled in the same manner. If you attempt to call a function before it is declared, the compiler will fail because the function was not compiled before it was caled. See More
Laura Kyle
Michael Murphy
Top Con
•••

C structs are very weak and outdated

C structs lack a lot of modern capabilities that are vital in programming languages of today, such as assigning member functions to structs to give them object-oriented capabilities, constructs, deconstructors and RAII. Great care must be used when using structs in C to prevent memory leaks and ridiculously slow structs. See More
Laura Kyle
Michael Murphy
Top Con
•••

Includes require obscene resources to compile

All the modern languages have resulted in ditching the ancient deprecated model of #include statements and have instead adopted the superior model of modules. When compiling software written in C, the programmer is forced to also compile X headers which contain Y headers which contain Z headers and so forth -- drastically increasing the number of lines that need to be compiled. In order to compile something as simple as "Hello, World", for example, 18K lines of code needs to be compiled. This can be very taxing on RAM and CPU resources, causing compile times to quickly absorb a large portion of the programming process. See More
Laura Kyle
Michael Murphy
Top Con
•••

Heavily outdated programming concepts

C lacks a large majority of programming concepts that modern languages make use of today. The existing functionality of C makes use of outdated and deprecated methodologies which can be of great annoyance to the modern day programmer. See More
HideSee All
73

Go

My Recommendation for Go

My Recommendation for Go

All
35
Experiences
4
Pros
18
Cons
12
Specs
Ray
Michael Murphy
Top Pro
•••

Exceptionally simple and scalable multithreaded and concurrent programming

Goroutines are "lightweight threads" that runs on OS threads. They provide a simple way for concurrent operations — prepending a function with go will execute it concurrently. It utilizes channels for communication between goroutines which aids to prevent races and makes synchronizing execution effortless across goroutines. The maximum number of OS threads goroutines can run on may be defined at compile time with the GOMAXPROCS variable. See More
Endi Sukaj
Top Con
•••

Hard to abstract even the simplest notions

Go is famously regarded as very simple. However, this simplicity becomes problematic in time. Programmers who use Go find themselves over and over again writing the same thing from a very low point of view. Domains not already served by libraries that are easy to glue are very difficult to get into. See More
Islam Abou El Ata
Islam Abou El Ata's Experience
In my third day of learning Go I was able to implement binary search in a matter of around 30min. See More
Specs
Current stable version:1.17
Platforms:Windows, Linux, Mac etc.
GZipped size:115 MB (installer)
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
Slimothy
Michael Murphy
Top Pro
•••

The go compiler compiles binaries instantly — as fast as a scripting language interpreter

Compiled binaries are fast — about as fast in C in most cases. Compiles on every OS without effort — truly cross-platform compiler. As a result of the fast compilation speed, you can use the gorun program to use go source code as if it was a scripting language. See More
gilch
Top Con
•••

Designed to make the programmer expendable

Go was designed for large team projects where many contributors may be incompetent. That Go can still get things done under these conditions is a testament to its utility in this niche. Go's infamously weak abstraction power is thus a feature, not a bug, meant to prevent your teammates from doing too much damage. This also means any team member can be easily replaced by another code monkey at minimum cost. Good for the company, bad for you. The more talented programmers, on the other hand, will be very frustrated by having one hand tied behind their back. See More
ShrewdFreyr
ShrewdFreyr's Experience
Easy to learn See More
Slimothy
Michael Murphy
Top Pro
•••

Simplified C-like syntax that is as easy to read and write as Python

The language is designed in a manner that seems logical. Syntax is simplified to reduce burden on the programmer and compiler developers. See More
Ray
Mario Ray Mahardhika
Top Con
•••

Easy to shadow variable

Due to single character only difference, declare and assign statement can easily shadow variable from outer scope unconsciously. Example: err := nil if xxx { err := somefunctionthatreturnsanerr } return err // always return nil See More
CredibleThelxiepeia
CredibleThelxiepeia's Experience
10 years of programming in this language. it replaced all other languages to program the backends for web apps See More
Ray
Michael Murphy
Top Pro
•••

Programmers don't have to argue over what 10% subet of the language to implement in their software project

The language promotes programming in a specific idiomatic style, which helps keep every programmer on the same page. See More
meikl
Top Con
•••

Changing visibility requires renaming all over the code

See More
HarmoniousDamu
HarmoniousDamu's Experience
Extensive See More
Monika
Paolo
Michael Murphy
Top Pro
•••

Demonstrates a unique, simple concept to object-oriented programming

All types are essentially objects, be they type aliases or structs. The compiler automatically associates types to their methods at compile time. Those methods are automatically associated to all interfaces that match. This allows you to gain the benefits of multiple inheritance without glue code. As a result of the design, classes are rendered obsolete and the resulting style is easy to comprehend. See More
Monika
MightyHedetet
Top Con
•••

Forces K&R style and won't allow Allman style

Golang developers were extremely short-sighted and biased by forcing the K&R style, which should never have happened. Basically kicking Allman style users out of their language. See More
Endi Sukaj
Top Pro
•••

Great team working behind it

Go has a solid team of engineers working on it (some of the best networking engineers in the world are working on Go). Up until now, the great engineering of the language has compensated for its lack of power. See More
CourteousFujin
Top Con
•••

Lacks support for immutable data

Only way to prevent something from being mutated is to make copies of it, and to be very careful to not mutate it. See More
Monika
Ray
Michael Murphy
Top Pro
•••

API documentation is rich in content; easy to memorize

Only features deemed critical are added to the language to prevent cruft from working its way into the language. The language is small enough to fit inside one's head without having to repeatedly open documentation. Documentation is hosted on an official webpage in a manner that is simple to read and understand. See More
CourteousFujin
Top Con
•••

Does not have sum types

Makes it harder to have functions of different parameters types in a non OOP language. Thus messy generics and interfaces, and more confusion, where sum types could have solved a number of issues. See More
Paolo
Ray
Michael Murphy
Top Pro
•••

Supports functional programming techniques such as function literals

This naturally also supports first class and high order functions, so you may pass functions as variables to other functions. See More
CourteousFujin
Top Con
•••

Doesn't have true enums

Golang does weirdness with const versus having real enums, like other languages. This reflects the stubbornness and shortsightedness of the core developers, similar to the issue with generics, where it was denied that it was needed until it became too obvious that it should have been added years ago. See More
Paolo
Endi Sukaj
Michael Murphy
Top Pro
•••

Multiple variables may be assigned on a single line

This conveniently eliminates the need to create temporary variables. Fibonacci example: x, y = y, x+y See More
CourteousFujin
Top Con
•••

Golang controlled by Google

Solves Google problems, which might not be your or the majority of user's problems. Was created for the benefit and purposes of Google, so is less flexible in language direction and options. See More
Craig Weber
Top Pro
•••

Performance is on the order of C and Java

Go is blazing fast, but easier to write than Python, JS, Ruby, or many other dynamic languages. See More
Monika
RickZeeland
Top Con
•••

No forms designer

Those who are used to Visual Studio can feel the lack of a forms designer for rapid development. See More
Ray
Laura Kyle
Michael Murphy
Top Pro
•••

Built-in unit testing

The idiomatic approach to writing a Go software project is to perform test-driven development with unit testing. Every source code file should have an associated *_test.go file which tests functions in the code. See More
Endi Sukaj
Top Con
•••

Performance slowdown because of indirect calls and garbage collection

Practically no meaningful Go application can be written without indirect function calls and garbage collection, these are central to Go's core infrastructure. But these are major impediments to achieving good performance. See More
Ray
Michael Murphy
Top Pro
•••

Provides tools for automatically formatting code for your entire software project

This helps keep every programmer on the same page in a project and eliminates arguments over formatting styles. See More
Ray
Mario Ray Mahardhika
Top Con
•••

Implementation of interfaces are difficult to figure out

Finding out what interfaces are implemented by a struct requires a magic crystal ball. They are easy to write, but difficult to read and trawl through. See More
Ray
Michael Murphy
Top Pro
•••

Easy to install and configure; simple to compile software

Go software can be immediately installed, regardless of your operating system, package manager, or processor architecture with the go get command. Software is compiled statically by default so there is no need to worry about software dependencies on the client system. Makefiles and headers are no longer necessary, as the package system automatically resolves dependencies, downloads source code and compiles via a single command: go build. See More
Monika
Ray
Michael Murphy
Top Pro
•••

Automatically generates API documentation for installed packages

Godoc is provided to automatically generate API documentation for Go projects. Godoc also hosts its own self-contained web server that will list documentation for all installed packages in your Go path. See More
Endi Sukaj
Top Pro
•••

Great language for building networking services

Go was started as a systems language but now it has fully committed in the niche of networking services. This has been a brilliant move by Go because it allows them to capitalize on the immense talent of the Go engineering team (who are in the most part network engineers). In a world dominated by Java EE and slow scripting language, Go was a breath of fresh air and it continues to be one of the most powerful languages if you want to build networking services. See More
Monika
Michael Murphy
Top Pro
•••

Supports 'modules' in the form of packages

Every Go source file contains a package line that indicates which package a file belongs to. If the name of the package is 'main', it indicates that this is a program that will be compiled into a binary. Otherwise, it will recognize that it is a package. See More
Laura Kyle
Michael Murphy
Top Pro
•••

Supports splitting source code into multiple files

As long as every source code file in a directory has the same package name, the compiler will automatically concatenate all of the files together during the compilation process. See More
Ray
Michael Murphy
Top Pro
•••

Syntax for exported code from a package is simplified to be less verbose than other languages

Any variable, type and function whose name begins with a capital letter will be exported by a project, while all other code remains private. There is no longer a need to signify that a piece of code is 'private' or 'public' manually. See More
HideSee All
72

Lua

My Recommendation for Lua

My Recommendation for Lua

Add Video or Image
All
25
Experiences
3
Pros
15
Cons
6
Specs
Steven Noonan
Top Pro
•••

Embeddable

Many different game engines (e.g. Elder Scrolls series, ToME) use Lua for scripting, and it's runtime is designed for embedded use. See More
Tom Raleigh
Top Con
•••

Prototype-based inheritance

Lua features a prototye-based inheritance model. While this is also used by Javascript, it's not used by many other mainstream languages, and so some of the concepts learned while learning Lua won't be very applicable to other languages. See More
Anton Outkine
Anton Outkine's Experience
Even though Lua has some strange syntax choices, it has such amazing game development libraries that they make up for its other flaws. Besides that, it's also a very simple language and so it is very easy to teach. See More
Specs
Platforms:Windows, Mac, Android, Linux
1lann
Top Pro
•••

Fast and lightweight

Lua is light and faster than most other scripting languages, especially with LuaJIT, a Lua compiler that can even run code faster than some compiled programming languages in some cases. See More
pukka studios
Top Con
•••

Batteries not included

Lua is so small mainly due to many of the components not being included in the core package. A lot of people need the functionality provided by the Lua module management system LuaRocks and libraries such as Penlight. See More
AffableAdrasteia
AffableAdrasteia's Experience
Lua is no longer being maintained See More
gilch
1lann
Top Pro
•••

Straightforward and simple

Lua's syntax is very simple and straightforward. Because of this, you can quickly write code without much fuss, and is part of the reason why it's so popular as an embedded scripting language in many video games. See More
Tom Raleigh
Top Con
•••

Undeclared variables are global

When writing a function, if a programmer forgets to declare a variable, that variable will be declared at global scope. The code will seem to run fine at first, but if another function uses a variable with the same name, but fails to declare it, it will create subtle, incredibly difficult to find bugs. See More
IntellectualTawhirimatea
IntellectualTawhirimatea's Experience
Easy to learn. Used in most games See More
cdt5050
Top Pro
•••

Prototype based object oriented programming

Prototype based OOP was designed to be a more clear and easy to understand alternative to class based OOP, the creators of prototypes seeing classes as an unnecessary and complex way of handling classes. As such, it may be an ideal way to introduce a beginner to OOP concepts. See More
Tom Raleigh
Top Con
•••

1-indexed Arrays

Defying conventions from most other programming languages, Lua uses arrays that start at 1, rather than 0. While seemingly beginner friendly, this can complicate some logic, and sets beginners up for confusion when looking at code from other languages. See More
Rok
Top Pro
•••

Tables

It has tables. Once you use tables, you never go back. You will miss them everywhere else. See More
Alex
byme
Top Con
•••

Widely used only in game industry as result it is difficult to find first job

See More
pukka studios
Top Pro
•••

Helpful community

Due to the growing popularity, Lua has a rather large and helpful community surrounding it. See More
Johnicholas Hines
Top Con
•••

No += operator

Programmers coming from C, C++, Javascript or similar may reach for the += operator, and experience a moment of confusion when it is not available. See More
Who is a good Dalek?
Top Pro
•••

Very easy to integrate with C and C++

One of the best features of Lua is its very well designed C API. This is very useful if you have an existing C library you need to integrate with Lua or quickly get a Lua script running on the C side of the game. Finally Lua plays so nice with C that if you need to optimise for speed you can re-write it in C a lot easier than other languages. See More
HappyMwari
Top Pro
•••

Simple

Easy to learn. See More
HappyMwari
Top Pro
•••

Great documentation

The official Lua documentation is very helpful and thorough. There are also a large number of online resources or books with lots of helpful information for beginners and advanced users alike. See More
HappyMwari
Top Pro
•••

Fast

Lua's performance compares very well to other languages, If performance needs to be further improved you can: Implement critical parts in C Use the LuaJIT compiler. The LuaJIT compiler is a drop in replacement for the stock compiler and provides significant performance improvements. From the overview page: LuaJIT speeds can rival code written in C. See More
Endi Sukaj
Anton Outkine
Top Pro
•••

Excellent third-party libraries

Love2D and PICO-8 are just two examples of an amazing community dedicated to making great tools that are perfect for teaching and exciting beginners. See More
Belle
RespectableNinsar
Top Pro
•••

Then and end instead of { }

For new users, being able to write out "then" and "end" makes all the difference. If you do this, THEN do this. End. See More
Who is a good Dalek?
Top Pro
•••

Portable

Lua can be built on any platform with a ANSI C compiler. Other than that, Lua is extremely small. For example, the tarball for Lua 5.2.1 is only 245K compressed and 960K uncompressed (including documentation). When built on Linux, the Lua interpreter built with the standard libraries takes 182K and the Lua library takes 243K. The small size and the ability to build with a C compiler make Lua an extremely portable language that can run on a lot of different systems and computers. See More
pukka studios
Top Pro
•••

Clean and simple syntax suitable for beginners

The Lua syntax is modeled from Modula, a language known for being a fantastic introduction to programming. The Lua syntax also has the following key characteristics: Semicolon as a statement separator is optional (mostly used to resolve ambiguous cases as in a = f; (g).x(a)). Syntactic sugar for function calls (f'string', f"string", f[[string]], and f{table}) and method calls (obj:m()). See More
TranquilMaui
Top Pro
•••

Prototype-based Inheritance

Lua uses the prototype-based OOP, which is also used by JavaScript, REBOL, and AHK. More generalized OO is used in many newer languages such as Golang, Vlang, Odin, Zip, etc... In many ways prototype-based OOP is easier to use and reason about than class-based OOP, some argue it's even better. See More
HideSee All
72

Elixir

My Recommendation for Elixir

My Recommendation for Elixir

Add Video or Image
All
25
Experiences
4
Pros
15
Cons
5
Specs
Laura Kyle
Thanya Nitithatsanakul
Top Pro
•••

Clean syntax

Easier to both read and write. See More
Endi Sukaj
Kabie Sage
Top Con
•••

Needs previous programming experience

The benefits of the language might not be obvious for a first learner. See More
Jarius Jenkins
Jarius Jenkins's Experience
Used to develop in-house, web based support tools that interact with a number of legacy systems. Tools initially developed with various languages, including: Python JavaScript (Vue / Svelte) Go See More
Specs
Current stable version:1.11.2
Price:Open source (Free)
GZipped size:3.61 MB (without required Erlang VM)
Site:https://elixir-lang.org
Laura Kyle
Thanya Nitithatsanakul
Top Pro
•••

Great community

See More
LivelyTaranis
Top Con
•••

Deployment is still not as easy as it should be

See More
FascinatingJuventas
FascinatingJuventas's Experience
25 years software architect and development. 1 U.S. software patent. Have delivered projects written in PHP, Java, Ruby, avd and Elixir. See More
Whisky Ryan
Top Pro
•••

Functional and concurrent

Easily leverage the power of modern multi-core processors. See More
Laura Kyle
Carter Gale
Top Con
•••

Not that popular

This language doesn't have the widespread support and communities that other languages such as Java, C/C#/C++, JavaScript, etc. have. See More
SuccinctHuttellurra
SuccinctHuttellurra's Experience
I switched from Object-Oriented Programming (OOP) to Functional Programming (FP) after 15 years of programming. I wish I had turn earlier. FP is amazing and immutability is something you hate at first but will no longer live without it after you understand it. Elixir is one of the best FP languages today. I chose Elixir also for Erlang and OTP, which designed on concurrency. This is the secret weapon for building highly scalable systems. I changed my primary language from JavaScript to Elixir two years ago and is very happy I made the decision. See More
FascinatingJuventas
Top Pro
•••

Great getting started tutorials

The tutorials are very clear and concise (even for a person not used to functional programming). Plus they are also very mobile friendly. See More
FascinatingJuventas
Top Con
•••

Some design choices may seem strange

Some design choices could have been a little more appealing, for example: using "do...end" comes natural in Ruby for blocks but Elixir uses them for everything and it looks pretty weird: Enum.map [1, 2, 3], fn(x) -> x * 2 end or receive do {:hello, msg} -> msg {:world, msg} -> "won't match" end See More
blueray
blueray's Experience
Build resilient applications with Erlang’s Open Telecom Platform See More
PleasantSirsir
Top Pro
•••

Great for concurrency

Leverages the existing Erlang BEAM VM See More
ExcitedThoon
Top Con
•••

hardly ever used anywhere

See More
PleasantSirsir
Top Pro
•••

Great documentation

Elixir's documentation is very good. It covers everything and always helps solving any problem you may have. It's also always available from the terminal. See More
FascinatingJuventas
Top Pro
•••

Easy to download libraries

Comes with built in build tool called "mix". This will automatically download libraries and put them in the scope of the application when you add them to the "deps" function and run mix deps.get See More
Jinseop Kim
Top Pro
•••

Scalability

Elixir programming is ideal for applications that have many users or are actively growing their audience. Elixir can easily cope with much traffic without extra costs for additional servers. More details can be found here. See More
blueray
Top Pro
•••

Can build resilient applications with Erlang’s Open Telecom Platform

See More
ReveredLamashtu
Top Pro
•••

Learning FP first

Learning FP first will make programs easier to reason about and avoids many of the serious drawbacks of OO languages. Later, if you use different languages, you can apply the same principles to keep code clean and understandable. See More
Clinton
Top Pro
•••

Types don't get in the way

See More
Clinton
Top Pro
•••

Easy for new programmers to pick up

By getting rid of all the complexity of object-oriented programming, Elixir lowers the bar of entry for new programmers. See More
Endi Sukaj
Luang Chuenjit
Top Pro
•••

Built-in virtual machine

See More
François Roucoux
Top Pro
•••

Metaprogramming facility

Elixir allows macros for expanding complex sets of instructions during compilation. See More
PleasantSirsir
Top Pro
•••

Full access to Erlang functions

You can call Erlang functions directly without any overhead: https://elixir-lang.org/getting-started/erlang-libraries.html See More
HideSee All
72

C#

My Recommendation for C#

My Recommendation for C#

All
29
Experiences
6
Pros
13
Cons
9
Specs
Laura Kyle
Aethec
Top Pro
•••

.NET is a great toolbox

C# runs on top of the .NET framework, which provides many libraries containing classes used for common tasks such as connecting to the Internet, displaying a window or editing files. Unlike many other languages, you don't have to pick between a handful of libraries for every small task you want to do. See More
Laura Kyle
Alexey Cherkaev
Top Con
•••

Complex syntax

Too many syntactic constructs to learn before it becomes usable. See More
ComposedKingu
ComposedKingu's Experience
Its good, been programming in it for 4 years now. Great for game design as well as UX due to it working well with Microsoft's XAML. Recommended. See More
Specs
Platforms:Windows, Linux, Mac, Android, IOS
License:MIT, Open Source
IDE Support:Visual Studio on Windows, JetBrains Rider, Visual Studio Code on other platforms
Standard:ECMA
Adam
Top Pro
•••

Incredibly Well-Engineered Language

Where other languages invoke the feeling of being a product of organic growth over time, C# just feels like an incredibly well-designed language where everything has its purpose and almost nothing is non-essential. See More
ExcitedThoon
Theodore Lief Gannon
Eonil
Top Con
•••

Older versions lacks standard-library support for immutable data structures

See More
Nameless Man (Livinglist)
Nameless Man (Livinglist)'s Experience
C# is a well-designed programming language with elegant syntax that's makes code easy to understand. Along with the best IDE, Visual Studio, and the support from Xamarin, you can basically build anything with it. From a website, windows universal app, to native Android or iOS app. Microsoft offers plenty of documents for C#, so you can avoid being stuck in weird problem and getting frustrated for that. See More
Laura Kyle
CheesySquirrel
Aethec
Top Pro
•••

Awesome IDE for Windows

On Windows, Visual Studio is the recommended C# IDE. It provides a very flexible GUI that you can rearrange the way you want and many useful features such as refactorings (rename a variable, extract some code into a method, ...) and code formatting (you can pick exactly how you want the code to be formatted). Visual Studio also highlights your errors when you compile, making your debug sessions more efficient since you don't have to run the code to see the mistakes. There's also a powerful debugger that allows you to execute the code step-by-step and even change what part of the code will be executed next. In addition to giving you all the line-by-line information you'll need in a hassle-free manner, Visual Studio has stuff you can click on in the errors window that will take you to the documentation for that error, saving you several minutes of web searching. In addition to all of this, Visual Studio has an intuitive, intelligent, and helpful graphical user interface designer that generates code for you (the best of WYSIWYG, in my opinion), which is helpful for new programmers. Being able to create a fantastic-looking UI with one's mouse and then optionally tweak with code helps make programming fun for beginner developers. Visual Studio also has the best code completion --Intellisense is every bit as intelligent as the name says it is. It, as well as VS's parameter hinting, is context-, type-, user-, and position-sensitive, and displays relevant completions in a perfectly convenient yet understandable order. This feature allows a new programmer to answer the questions "What does this do?" and "How do I use it?" right then and there rather than having to switch to a browser to read through extensive documentation. This allows the programmer to satisfy their curiosity before it is snuffed out by several minutes of struggling through exhaustive documentation. And for the more adventurous and text-ready developer, Microsoft does the best job of ensuring that everything, from interfaces and wildcard types down to Console.WriteLine("") and the + operator, is well-documented and easy to understand, with relevant and well-explained usage examples that manage to be bite-size yet complete, simple yet truly helpful. The reference site is easy to navigate, well-organized, clean and uncluttered, up-to-date, and fresh and enjoyable to look at, and every page is well-written with consideration for readers who are not C# experts yet want to read about changing the console background color. The best part? It's free! Visual C# Express contains all of the features described above, at zero cost. If you are a student, you can probably get Visual Studio Professional from your university, which also includes tools for unit testing and supports plugins. See More
PoliteGwydion
Top Con
•••

A pale imitation of Java

C# is a Java-like language, but Microsoft failed to imitate Java's consistency. For instance, C# has types that cannot be passed by address (e.g. DateTime), forcing the developer to use ugly workarounds. See More
OptimisticProserpina
OptimisticProserpina's Experience
One of the best 1st language to learn See More
Laura Kyle
Slimothy
Aethec
Top Pro
•••

Great introduction to object-oriented programming

Object-oriented programming is the most widely-used paradigm. C# offers support for common OOP features such as classes, methods and fields, plus some features not found in competing languages like properties, events and static classes. C# code is much more readable thanks to the syntactic sugar it offers. You can truly concentrate on your code, not on the way it's implemented. See More
Carl Walsh
Endi Sukaj
Top Con
•••

Too easy to write multithreading apps that are buggy

Many web frameworks or GUI libraries will push novice users to writing multithreaded code, which leads to frustrating race condition bugs. Other languages with multithreading push users towards safe constructs, like passing messages and immutable or synchronized containers. But in C# the data structures aren't synchronized by default, and it's too easy to just set a field and observe the result from another thread (until you compile with Release, and now you have a heisenbug). See More
InterestingBelenus
InterestingBelenus's Experience
How is this a con? You like notepad? See More
Theodore Lief Gannon
Aethec
Top Pro
•••

Supports some functional features

C# is primarily object-oriented, but it also supports some features typically found in functional languages such as lambdas, delegates and anonymous classes. Methods can be treated like any other object, and the Linq query system operates on monads with lazy evaluation (though it hides this with a lot of syntactic sugar). You don't need to use these features to code in C#, though, so you can start with OOP and then learn about them. See More
Endi Sukaj
Blanco
Top Con
•••

Often-used products in most C# development environments get expensive

The majority of the C# development community uses Microsoft products which are not all free and open-source. As you get into the enterprise level of some of these products and subscriptions, the expense is multiple factors of 10 greater. While you can use a fully open-source and free C# environment, the community around that is much smaller. While this can be said for other languages as well, the majority of C# falls into the for-pay Microsoft realm. See More
JovialAdephagia
JovialAdephagia's Experience
C# is really easy and stable programming language. I love it and i am programming games and software with it! See More
ThriftyNannaNepsdottir
Top Pro
•••

Awesome IDE for cross-platform development

Visual studio has embraced cross platform development over the past 3 years. With Visual Studio Code, you now have a light, and quick IDE variant available for free as well. See More
Anis-Barghouthi
Endi Sukaj
michael.switzer
Top Con
•••

Popularly used on Visual Studio (proprietary)

Most people learn and depend on Visual Studio (proprietary) to write C#. The result is people learn how to use an IDE and not the concepts or fundamentals of good programming. However, you don't need VS to develop in C#, all you need is the dotnet CLI and a text editor that supports OmniSharp like VSCodium, Vim and Emacs. See More
ResourcefulGrannus
ResourcefulGrannus's Experience
Very easy to pick up. Alot of the advanced features aren't required to build a complete program for the first time. See More
Aethec
Top Pro
•••

Best language for Windows programs

C# is clearly the best choice for Windows programs. The .NET framework contains everything you need to build great-looking apps, without having to learn the confusing Win32 API or download a ton of external libraries. C# can also be used to build Windows 8's "modern" apps. See More
TallTamanuitera
Top Con
•••

Large Library and eco system makes it unsuitable for beginers

yes, all the information about the .net framework is in one place, but it is so extense that it introduces a steep learning curve for newcomers to the field of programming languages. See More
thermoplastics
Craig
Top Pro
•••

With ASP CORE a good language to learn

With CORE you are no longer just limited to Windows, so a language worth learning. See More
Simona
CromulentFides
Top Con
•••

.NET is a mess

Continual drama with standards, updates, Microsoft, and being really cross-platform. See More
Endi Sukaj
apokryfos
Top Pro
•••

Can mix high and low level programming

You can code at the high level without worrying about pointers and memory management, but if you so choose you can switch to lower level programming with direct memory management and pointer manipulation (though you need to compile to specifically allow this). See More
MightyHedetet
Top Con
•••

Excessively class based OOP oriented

Limits users into overly using awkward paradigm and creating another kind of spaghetti code. See More
teadan
ThriftyNannaNepsdottir
apokryfos
Top Pro
•••

Very high demand in the industry

C#'s been around for just the right amount of time, is regularly updated with useful additions, is versatile, easy to write & read, & has excellent tooling support. This means it is a top choice for many organizations & will remain so for the foreseeable future. See More
Aethec
Top Pro
•••

Supported on many platforms

C# can be used for Windows apps, Linux apps, OS X apps, Windows 8 "modern" apps, websites, games, iPhone apps, Android apps, Windows Phone apps, and more. If you want to create a cross-platform application, you can share most of the code and write one GUI for each platform. See More
JM80
Jiří Sýkora
Top Pro
•••

.NET truly universal

With .NET core it is a truly universal programming language which support desktop apps (Windows), Mobile apps (Xamarin), Web Apps (ASP.Core MVC). Also is perfectly fit to serverless programming for micro services. Soon it will be also support Web assembly (Blazor). See More
Laura Kyle
Slimothy
nDman
Top Pro
•••

Great language for Unity game engine

Unity provides a selection of programming languages depending on preference or knowledge - C#, JS, Boo and UnityScript. C# is arguably the most powerful with better syntax and stronger language structure. It allows using script files without attaching them to any game object (classes, methods inside unattached scripts that can be used at any time). There are more tutorials and information for C# than UnityScript and Visual Studio can be used to code for unity in C#. Additionally, learning C# allows using it outside of Unity as well unlike UnityScript. See More
HideSee All
68

Kotlin

My Recommendation for Kotlin

My Recommendation for Kotlin

Add Video or Image
All
22
Experiences
2
Pros
13
Cons
6
Specs
wolfenlord
Quinton Dolan
Top Pro
•••

Good IDE and build tool support

JetBrains provide tightly integrated Kotlin support in IntelliJ IDEA CE and derivatives like Android Studio, and an Eclipse Plugin. Build tool plugins exist for Maven, Gradle and Ant. See More
CromulentHecaterus
Top Con
•••

The need for Java interoperability has forced some limitations

The need to make Kotlin interoperable with Java has caused some unintuitive limitations to the language design. See More
CaffeinatedEleos
CaffeinatedEleos's Experience
Great language, lets you do really complex and simple stuff at the same time See More
Specs
Current stable version:1.3
Quinton Dolan
Top Pro
•••

Supported by Google as an official first-class language on Android

Google are backing Kotlin as a direct alternative to Java and Android's answer to Swift. With Android Studio being based on JetBrain's IDEA platform it already has excellent Kotlin support, and Google's vested interests will ensure continued growth in users and support. See More
Quinton Dolan
Paolo
Top Con
•••

User community still quite small

The availability of online support is still quite limited due to the young age of the language, and some of what does show up in searches refers to pre 1.0 release syntax. See More
PopularMultultu
PopularMultultu's Experience
The most expressive program language from my experience (above C#, Java, TypeScript, JS, C++, PHP). It's very (null)safe; it's a pleasure to write with it. It feels like I'm narrating my idea to the most understanding listener - and can rely on him when I'm getting lost. Love it See More
Quinton Dolan
Top Pro
•••

Simple syntax with minimal boilerplate

Getters and setters, data classes, variable type declarations, functions, lambdas, collections etc, all have language constructs intended to make reading and writing the code concise with minimal boilerplate. See More
meikl
Top Con
•••

Too complicated in some areas for beginners

Kotlin is rather a power-user language, but not that suited for beginners, e.g. because of heavy use of lambdas. See More
Zack H
Top Pro
•••

Does not impose a particular philosophy of programming

It's not overly OOP like Java and it does not enforce strict functional paradigms either. See More
Simona
CromulentFides
Top Con
•••

Too Android centric

Not so cross-platform in direction and focus. See More
Lubo
Top Pro
•••

Targets JVM, JavaScript and Native

Has great potential not only to be first but and last language to learn. Targeting Backend, Frontend, Mobile + plans for Data science, IoT, Gaming, Desktop apps and WASM. Goals are to make Kotling programs with easily transferable core logic between (Win, IoS, Raspberry(IoT), Mac, Android, Browser e.t.c) systems and add specifics on top. Basicly only EASY concurrency and distributed computing is missing for now. See More
TactfulTuireann
Top Con
•••

Does not add substantial elements over Java 8 while being a nice language

See More
wolfenlord
Muhammad Ali Hassan
Top Pro
•••

Great tooling support

Since Kotlin is made by Jetbrains (the developers of IntelliJ IDEA) so it stands to reason that the IntelliJ support for Kotlin is also great. Besides that, Kotlin also works well with existing Java tools such as Eclipse, Maven, Gradle, Android Studio, etc. See More
CromulentHecaterus
Top Con
•••

May be hard for programmers already used to imperative style to learn functional programming from Kotlin

Since Kotlin does not enforce any particular paradigms and is not purely functional, it can be pretty easy to fall back to imperative programming habits if a programmer comes from an imperative background. See More
Muhammad Ali Hassan
Top Pro
•••

Easy adoption for existing Java programmers

Kotlin runs on the JVM and Java interoperability has been one of the main objectives since the language was born. It runs everywhere Java does; web servers, mobile devices (Android), and desktop applications. It also works with all the major tools in the Java ecosystem like Eclipse, IntelliJ, Maven, Ant, Gradle, Spring Boot, etc. All of this makes adoption extremely easy even for existing Java projects. On top of this there's also ensured Type safety and less boilerplate code needed. See More
Monika
CAB
Top Pro
•••

Multi-platform libraries

Kotlin provides the way to create single library to be used across multiple platforms (JVM, JS, UNIX, MacOS, iOS, Android, Windows, etc.). The structure includes cross-platform API definition (and code) and platform-specific implementations when needed. For example the class Date provides similar functionality on both JVM and JS, but need to be called differently. So with this library programmer doesn't need to code separately for JVM and JS, but use this multi-platform library instead. See More
Muhammad Ali Hassan
Top Pro
•••

Low-risk adoption for existing Java codebases

Since it has such a good interoperability with Java, Java libraries, and Java tools. It can be adopted for an existing Java codebase at little to no cost. The codebase can be converted from Java to Kotlin little by little without ever disrupting the functionality of the application itself. See More
DecorousAmeNoUzume
Top Pro
•••

No runtime overhead

The standard library is relatively small and tight. It mostly consists of focused extensions of the Java standard library and as such adds no additional runtime overhead to existing Java projects. See More
Muhammad Ali Hassan
Top Pro
•••

Officially supported for Android development

Starting with version 3.0 of Android Studio, Kotlin support will be built-in. This means that it's now easier than ever to use Kotlin for existing Android projects or even start writing Android apps only with Kotlin from scratch. This also means that Kotlin and Kotlin plugins for Android Studio will be fully supported in the future and their likelihood of being abandoned is quite small since Google is fully embracing the language for their Android ecosystem (alongside Java and C++). See More
DecorousAmeNoUzume
Top Pro
•••

Is built to solve industrial problems

Kotlin has been designed and built by developers who have an industrial background and not an academic one. As such, it tries to solve issues mostly found in industrial settings. For example, the Kotlin type system helps developers avoid null pointer exceptions. Reasearch languages usually do not have null at all, but APIs and large codebases usually need null. See More
DecorousAmeNoUzume
Top Pro
•••

Easy to learn if you have prior programming experience

Kotlin's syntax is extremely easy to understand. The language can be picked up in a few hours just by reading the language reference. See More
HideSee All
68

TypeScript

My Recommendation for TypeScript

My Recommendation for TypeScript

Add Video or Image
All
40
Experiences
1
Pros
20
Cons
18
Specs
ImmaculateKuu
Top Con
•••

Syntax is too verbose

See More
Peter Carter
Top Pro
•••

Learn JavaScript and types at the same time

JavaScript is the language of the web and has a syntax similar to a lot of other languages but doesn't teach types, which is a concept fundamental to understanding the nature of computer code. Learning TypeScript now may involve a very slightly steeper learning curve than vanilla JavaScript but will be well worth it in the long run. See More
kaznovac
kaznovac's Experience
TS is a language for enterprise size JS projects See More
Specs
Current stable version:3.7
IDE Support:Very good
ImmaculateKuu
Top Con
•••

Too similar to Javascript

Presents some advantages compared to Javascript, but because it is designed to be a superset of Javascript, it means all the bad parts of Javascript are still present. See More
Travis Rigg
Top Pro
•••

Optional static typing

Typescript has optional static typing with support for interfaces and generics, and intelligent type inference. It makes refactoring large codebases a breeze, and provides many more safeguards for creating stable code. See More
kaznovac
Top Con
•••

Awful error messages

Comparing to Elm or Rust for example, TypeScript's error messages won't say you very much. For example if you change method of interface which your class implements it won't say your class have incorrect implementation. Instead it'll show error in usage of instances of class. In some cases it can spoil hours of your work trying to figure out why your parameters are incorrect. See More
teadan
ExcitedThoon
Top Pro
•••

It feels a lot like the C# of the web, to save the messiness of javascript

Especially in large projects, the stronger type system is a definite win over javascript, because javascript gets to be a mess quickly with many programmers in a team... while still keeping the power of javascript. See More
MightyHedetet
Top Con
•••

Trick of Microsoft

Another plot by Microsoft to divert people away from a popular language they don't control. Think of C#/Microsoft versus Java or Pascal/Delphi. See More
ImmaculateKuu
Top Pro
•••

Strict superset of Javascript

Every existing Javascript program is already a valid TypeScript program giving it the best support for existing libraries, which is particularly useful if you need to integrate with an existing Javascript code base. See More
kaznovac
Top Con
•••

TSC compiler is somewhat slow

See More
ImmaculateKuu
Top Pro
•••

Polyfill for ES6 fat-arrow syntax

Typescript implements the fat arrow syntax, which always maintains the current context for this and is a shorter/more convenient syntax than traditional function definition. See More
CAB
Top Con
•••

Will be replaced soon (hopefully)

There are many attempts to replace JS with something better. Current wave is WebAssembly. If not it something else will replace JS sooner rather then later. See More
ImmaculateKuu
Top Pro
•••

Works well with Angular 2

Angular 2 is built using TypeScript and applications built using it can make use of that (or not). See More
LivelyTaranis
Top Con
•••

Benefits don't exceed costs

It is rather unnecessarily complicated for experienced JavaScript developers. See More
ImmaculateKuu
Top Pro
•••

Strong typed language

Lot of benefits of it, you can read this. See More
Monika
TallTamanuitera
Top Con
•••

Typescript is a Javascript superset not a language in its own

Typescript is not a language, it's a Microsoft superset of Javascript. You have to learn JS first. See More
LoveableLofn
Top Pro
•••

Open source

See More
ImmaculateKuu
Top Con
•••

Small community

See More
Travis Rigg
Top Pro
•••

Great support for editors (Sublime, Code, Vim, IntelliJ...)

See More
ImmaculateKuu
Top Con
•••

Far less typed libraries than Dart (and TSD are never up to date).

Just compare https://pub.dartlang.org/packages and http://definitelytyped.org/tsd/ Typescript => 930 Dart => 2060 See More
Travis Rigg
Top Pro
•••

First party Visual Studio support

As a Microsoft developed project, it has first party Visual Studio support that's on par with its C# support with features like syntax sensitive statement completion. See More
CAB
Top Con
•••

Is not designed for big systems

As any scripting languages JS is difficult to maintain big system with many independently developed libraries. See More
Monika
Kristaps
HelpfulAstghik
Top Pro
•••

Somewhat future-proof browser code

The TS team targets the newest browser standards and helps you backfill in existing browsers, all with one simple tool (instead of babel+flow+???). Far better options for the server side though, but given that coding for the browser is the new qbasic, this is a good place to start. See More
LivelyTaranis
Top Con
•••

No Java-like package structure

If you prefer a Java-like approach of partitioning your code into different packages, the module system of typescript will confuse you. See More
ImmaculateKuu
Top Pro
•••

Clear roadmap

TypeScript has a clear and defined roadmap with rapid and constant releases. See More
LivelyTaranis
Top Con
•••

Requires "this" for field access

Even in cases were there is no ambiguity, you still have to use "this.fieldName" instead of just "fieldName". See More
ImmaculateKuu
Top Pro
•••

Built and supported by Microsoft

Being built by Microsoft, TypeScript is much more likely than most other similar open-source projects to receive continued long-term support, good documentation, and a steady stream of development. See More
LivelyTaranis
Top Con
•••

No support for conditional compilation

There is no clean way to have debug and release builds compiled from the same source, where the release version removes all debugging tools and outputs from the generated file(s). See More
ImmaculateKuu
Top Pro
•••

Great support for React, integrated typed JSX parsing

Strongly typed react components, so UI "templating" automatically gains type safety. See More
LivelyTaranis
Top Con
•••

Type checking not enforced by default

You have to use compiler flags to make sure it catches flaws like usage of implicit any, etc. See More
ImmaculateKuu
Top Pro
•••

Works well with existing Javascript code

Both can call Javascript code and be called by Javascript code. Making transitioning to the language very easy. See More
LivelyTaranis
Top Con
•••

Type inference coverage is incomplete

The default type when declaring and using a variable is any. For example, the following should break but does not: function add(a:number) { return a + 1 } function addAB(a, b) {return add(a) + b} addAB("this should break but doesn't :(", 100) In order to avoid this, you have to declare type signatures for every variable or parameter or set the flag --noImplicityAny when running the compiler. See More
ImmaculateKuu
Top Pro
•••

Ability to do functional programming

See More
LivelyTaranis
Top Con
•••

No support for dead code elimination

Typescript compiler does not remove dead code from generated file(s), you have to use external tools to remove unused code after compilation. This is harder to achieve, because Typescript compiler eliminated all type information. See More
prohyon
Top Pro
•••

Adds support for object-oriented programming

Typescript enables familiar object-oriented programming patterns: classes, inheritance, public/private methods and properties, et cetera. See More
Monika
CAB
Top Con
•••

Limiting to the JS target system (browsers)

As TS get compiled into JS its usage is limited to the browser's code. Which is not good for the first language to learn. See More
prohyon
Top Pro
•••

Low number of logical errors brought in by built-in type annotations

TypeScript's built-in type signatures allow developers to fully document interfaces and make sure that they will be correctly compiled. Therefore, cutting down on logical errors. See More
prohyon
Top Pro
•••

Compiles to very native looking code

Compiles to simple looking Javascript making it easy to understand what is happening and learn the language (if you already know Javascript). See More
prohyon
Top Pro
•••

Has a repository of high quality TypeScript type definitions for popular libraries

There are many ready to use and high quality TypeScript definitions for popular libraries including jquery, angular, bootstrap, d3, lodash and many-many more. See More
HideSee All
67

JavaScript

My Recommendation for JavaScript

My Recommendation for JavaScript

Add Video or Image
All
53
Experiences
7
Pros
23
Cons
22
Specs
Chloe Montanez
Slimothy
Stuart Kearney
Top Pro
•••

Required for web development

If you are looking to create web projects, you will have to learn Javascript in order to develop the client side code. If you learn the foundations of programming in JavaScript you can reapply that education later in building web applications. See More
Laura Kyle
Slimothy
Alan
Top Con
•••

Many errors pass silently

JavaScript looks for every possible way to treat the code you write as runnable and is very reluctant to point out likely errors. For example, you have call a function with too many arguments, the extra arguments are simply discarded. See More
Deuxis
Deuxis's Experience
It's a scripting language. Simple and pleasant for simple scripts, absolutely terrible for more complicated ones. Any non-trivial application in JavaScript quickly becomes not only hard to trace with all the interleaving braces and Mountains of Doom, the language is so full of quirks and gotchas that the knowledge base required to understand it on a good level is more arcane than technical. Also it's the most high level widely used language in the world. When learning JavaScript, do not expect to learn anything other than just JavaScript, besides simple imperative control structures, functions and (dynamic, intuitive at first glance, completely mindfucking to a newcomer soon later) assignment. See More
Specs
Engine:V8/ChakraCore
Author:Ryan Dahl/Joyent
Minimum Supported ECMAScript Version:ECMAScript 6 (Node v4.x-v10.x)
ECMAScript Modules:Available (as a flag) (only on Node 8.x-10.x)
See All Specs
Chloe Montanez
Slimothy
Tim Etler
Top Pro
•••

Runs on both the browser and the server

With Node.js, it is now possible to run JavaScript as a web server. This would allow you to be able to create server based applications sooner than would if you had to learn a separate programming language as well for server side code. As JavaScript is the only language supported by web browsers it puts it in the unique situation of being the only programming language that's available on both the client side and server side. See More
gilch
Top Con
•••

Easy to accidentally use globals

If you forget a var or new, you can clobber the global scope. For tiny scripts (JavaScript's original use case) globals are great, but for larger applications globals are generally regarded as a Bad Thing. This is because changes to one small part of a program can randomly break things anywhere else. These kinds of bugs are notoriously hard to find. See More
NonchalantPassalos
NonchalantPassalos's Experience
JavaScript is everywhere, and it will let you do a lot of cool things and give you lots of possibilities. It's far from a perfect language though, so I only recommend this as a first language under the implicit understanding that "first" means there will be a second language, and hopefully even more. See More
gilch
Top Pro
•••

First-class functions with lexical closures

While certainly not the only language with these features, this pro alone is so powerful that it compensates for most of JavaScript's problems. You'll learn to use closures and higher-order functions well in JavaScript, because you have to. And then you can generalize this knowledge to any other language that has these, and the good ones do. See More
YF L
Izem Lavrenti
Top Con
•••

Does not teach you about data types

Since JavaScript is a weakly typed language, you don't have to learn about data types if you start using JavaScript as your first language. Data types being one of the most important concepts in programming. This will also cause trouble in the long run when you will have to (inevitably) learn and work with a strongly or statically typed language because you will be forced to learn the type system from scratch. See More
yogy phang wijaya
yogy phang wijaya's Experience
as i know, javascript is standard for web developer. every web use javascript for their logic. this relative easy to get tools/editor for this language. and easy to debug, even on your browser See More
Chloe Montanez
Slimothy
Myrne Stol
Top Pro
•••

No installation required

If you run a web browser you already have JavaScript installed and can get started right away. Modern browsers such as Chrome also have very powerful programming consoles built into them. Aside from the browser console, you can also use online Javascript playgrounds such as JS Bin and JS Fiddle. Even from a tablet. See More
Kristaps
HelpfulAstghik
Top Con
•••

The constant churn of tooling and language

Trying to keep up=javascript fatigue. You won't have time to learn anything else if this is your first language, and you will probably think all programmers are crazy. Plus web assembly may open the door for better alternatives. See More
Benjamin Philippe
Benjamin Philippe's Experience
JavaScript sure is a very weird language, but in not too long, I've learned how to avoid them very well and to use "use strict";. Because of this, my experience using JavaScript has been really good, especially with it's great debugger. See More
DevDad
Slimothy
Tim Etler
Top Pro
•••

Massive ecosystem

JavaScript has one of the largest programming ecosystems, as shown by the being the most popular language for projects on GitHub. As there are so many projects written in JavaScript there are lots of libraries available to build off of and many of them are written to be easy to use and integrate into other projects. There are also lots of resources available for learning JavaScript. Other than traditional tutorials, language learning sites such as Codecademy have JavaScript courses. The Mozilla Developer Database also serves as a great resource for learning about the standard libraries built into JavaScript. See More
gilch
Top Con
•••

Weird type coercions

'5' - 1 == 4, but '5' + 1 == 51. There are other examples that make even less sense. See More
George Perry
George Perry's Experience
It's the most useful language that will open the most doors if you're looking to get into software or web development. See More
Slimothy
Stuart Kearney
Tim Etler
Top Pro
•••

Easy to build an application

By using the UI capabilities in HTML and CSS you can develop substantial applications with graphical interfaces more quickly and with less effort than in other languages which would require you to learn a windowing library. Building a useful application is one of the best ways to learn a new language and because of the low learning curve for creating applications you can create more substatial programs and learn more practical programming priciple faster. See More
gilch
Top Con
•••

The "this" keyword doesn't mean what you think it means

this is bound to whatever object called the function. Unless you invoke it as a method. Unless you invoke it as a constructor. Unless it's an arrow function. See More
Maxwell Anderson
Maxwell Anderson's Experience
JavaScript was my first real programming language. JavaScript is a good first language because it has a simple and familiar syntax and can be used for websites and games. It got me interested in programming by making it easy to develop games. See More
George Perry
Top Pro
•••

High demand for JavaScript developers

If you're looking for a career as a developer, JavaScript is the place to focus your attention. There is a huge demand for good developers especially in frameworks such as React and Angular. See More
Laura Kyle
Endi Sukaj
apokryfos
Top Con
•••

Each browser has its own quirks when executing the same code in some cases

Beginner programmers often make the mistake of coding something, seeing it works in the browser they tested it in, and then scratching their heads when it doesn't work in another browser. Ideally you'd want a language that works consistently across all platforms in order to be able to focus more on the programming and less on the underlying environment. It just takes time away from learning and forces you to spend time figuring out why this worked in browser X but not browser Y. See More
FlexibleBodbDerg
FlexibleBodbDerg's Experience
Used to build multiple web sites, portal solutions, and mobile applications using as well other frameworks and platforms including: ionic, angular, react, jquery, Dojo, and others See More
Chloe Montanez
Chris McCall
Top Pro
•••

Complete dev stack can be run online

With codepen.io and other prototyping tools, you can learn Javascript from a mobile device. You don't even need a computer. It can be learned from an internet cafe or public library. See More
gilch
Dave Mason
Top Con
•••

Complex

JavaScript has a long litany of warts and gotchas. JavaScript will bite you if you're just a wee bit careless. You have to exercise a great deal of caution and awareness. You either have to know the entire 545-page ES6 spec to avoid them all, or use a linter to help restrict you from using the bad parts (and you still have to be familiar with the language), but beginners don't know these things. (Linters are also prone to time-wasting false positives.) This is a significant cognitive burden on even the experienced programmer (as if coding wasn’t hard enough already), but try learning to program in the first place on top of all of this and you'll understand that JavaScript is a terrible choice for the beginner. See More
Chloe Montanez
DevDad
Top Pro
•••

JSON is native to JS

JSON is arguably a "must-learn". With JS, that's one less additional syntax to learn. See More
Monika
Guiomar Tuñón Hita
Top Con
•••

Easy to fall into bad manners and bad mind structure

It wouldn't consolidate a good mind structure for moving to other languages. Too open. See More
Chloe Montanez
DevDad
Paolo
Top Pro
•••

Very good debugger

Has a built in debugger with break points, watches that work on local values, and a console that you can use to edit anything at any time. Both in the browser (eg: Chrome), and server (eg: Nodejs). See More
DevDad
Slimothy
Alan
Top Con
•••

Limited standard library

Much often needed functionality is not in the standard library. (Contrast with Python.) However, there are well established libraries such as Lodash, to fill the gap (however, due to the diverse/fractured ecosystem it may not be clear what library to use). See More
DevDad
Top Pro
•••

Can be very simple (teachable)

By setting a few ground-rules (effectively coding in a subset of JS), JS is one of the simplest languages to learn (requiring very few must-learn prerequisite concepts). See More
DevDad
Top Con
•••

Many tutorials, code, and resources, are structured for older ES5 code

See More
DevDad
Top Pro
•••

Great tools for development

Flow, JSHint/ESLint, Babel, npm, etc. See More
Izem Lavrenti
Thomas Collignon
Top Con
•••

Asynchronous coding is not easy for beginners

JavaScript can work synchronously but its current use is mainly around asynchronous instructions, and it's surely not a good way to start learning programming. See More
DevDad
Endi Sukaj
Andrew Wooldridge
Top Pro
•••

Several Platforms to use the web stack and JS to create multi-platform apps

Opens the door to native application development as well as just websites. Use with React Native, Weex or Quasar (Vue), PhoneGap or Cordova, NativeScript... (etc) to build native apps. Use mostly the same code base for multi-platform and web. See More
gilch
Top Con
•••

The `null` and `undefined` objects aren't really objects

Therefore, attempts to call methods on them will fail. This is especially frustrating since these are often returned instead of throwing exceptions. So a failure may appear far away from the actual cause, which makes bugs very hard to find. See More
Chloe Montanez
Shane Knysh
Top Pro
•••

Atwood's Law "Any application that can be written in JavaScript, will eventually be written in JavaScript."

May also be a con. See More
gilch
Top Con
•••

Array-like objects

Many cases when you should get an Array, you just get an Array-like object instead and none of the Array methods work on it. See More
DevDad
Top Pro
•••

Modern ESNext is far better than the JS of days past

Modern JS has made great strides, and can be targerted to older (or non-standard) browsers using Babel. There are new language constructs that can make programming in JS comfortable.; e.g.: async / await ( <3 ). See More
DevDad
Top Con
•••

Fast moving

The language and the web platform move fast these days. this makes it difficult for students as there is a lot of fragmentation and outdated information. See More
ExcitedThoon
Chloe Montanez
Stuart Kearney
Top Pro
•••

Instant gratification

While it's easy to argue that Python will give you 'instant gratification' (while actually ruining your understanding of good programming practices), JavaScript is far better in this regard. Make a small change to a page and it's immediately visible in the browser. You can throw in a JavaScript library like jQuery with minimal fuss. See More
gilch
Top Con
•••

Numbers that begin with 0 are assumed octal

This is very surprising for beginners. Especially since 00 through 07 seem to work just fine. And this isn't just for hardcoded numbers. The parseInt() function has the same problem, but only on some systems. See More
Deuxis
DevDad
Top Pro
•••

Speed (most implementations)

JS/ES is in the running for the fastest interpreted language given the optimizations and JIT integration of popular implementations. On the other hand, it fails utterly when compared with compiled (to native or VM code) languages. See More
DevDad
Top Con
•••

Good tools are pretty much a MUST for new programmers

You really want to be using a good editor (light IDE) and a linter, type checker (e.g.:Flow), etc. until you grok the language. And choosing / setting-up that development environment is it's own learning curve. If taught in a classroom, using a subset of JS with solid tools, there is an argument that JS could be an ideal first language... however, that is a lot of ceremony to protect the new programmer from JS gotchas. But without the tools, JS can be a very painful painful first language (trying to figure out why your code isn't doing what you intended). See More
Chloe Montanez
DevDad
Top Pro
•••

Integrates very well with UE4

Coding an immersive 3D game can retain the attention of new programmers. ncsoft/Unreal.js. See More
TallTamanuitera
Top Con
•••

The language itself is not very appealing to developers.

JS is one of the most dreaded languages as it was designed for the purpose of becoming just an scripting language for a browser. It was never intended to take over as the leading technology in web development, thus the language has been streched past its own capabilities. A beginer should learn something else first, something that is better conceived and refined. See More
cdt5050
Top Pro
•••

Prototype based Object Oriented System

Being object oriented, it supports the predominate and powerful programming approach. Being prototype based, it provides an intuitive approach to OOP. Whereas other popular languages use classes, which focus on thinking in the abstract, Javascript's prototypes allow you to focus on thinking in the concrete. For example, in a prototypical language, you think of a rectangle, and define it. You now have a rectangle. Let's say you want a red rectangle, you copy the rectangle and give it the property red. Want a blue one? Copy rectangle again give it a blue. Big blue rectangle? Copy blue rectangle and make it big. In a class-based language, first you describe a rectangle, describe a red rectangle as a type of rectangle, describe blue and big blue rectangles, and now that you have described them, you must create instances of them, and only then do you have the rectangles. Essentially: Classes are factories for objects, prototypes are objects themselves, and the latter method was created to be more intuitive, which is particularly advantageous to beginners. See More
Hesham ELMAHDY
Top Con
•••

Very confusing to read

See More
cdt5050
Martin Hradil
Top Pro
•••

C-like syntax

After learning Javascript, you will feel at home in other languages as C-like syntax is very common. See More
gilch
Top Con
•••

Has really bad parts you're better off avoiding altogether

But beginners won't know better. And even after you learn, you might have to deal with others' code that uses the bad stuff. JavaScript was originally developed in 10 days. It just wasn't designed that carefully. See More