Programming Languages
Tags: learning, programming, languages
Published: 2021-01-18 15:17:45

We are working hard to make an ultimate tutorial for beginners to learn any programming language easier. For now I do most of the work but I receive help from my team to fix errors. You can join this effort and post comments below to make suggestions how to improve our tutorials.

# Fundamentals

The main struggle of new software developers is understanding the basics of computation. After this any programming language will be more easy to learn. But virtual no tutorial is explaining the basics. So what are these? What you need to learn before learning a programming language? 

1. Boolean algebra and logic
1. Programming paradigms
1. History of programming languages
1. Compilers and interpreters
1. Operating system
1. Software architecture
1. Database design
1. Data structures and algorithms
1. Testing, version control and team-work

We have set-up our first tutorial to teach these things, it is called: Software Engineering and is available for free on our homepage.

**Tutorial:** [Software Engineering](https://sagecode.net/engineering.html)

# Advanced

After you take Software Engineering class you can consider yourself advanced software developer, and you can start learning any other programming language. 

You will be probably amazed how easy it is to learn after you know the fundamentals. Most programming languages are using the same paradigms but maybe some different keywords. Maybe operators and symbols are different and maybe functions or classes have different names.

We have manage to reuse some of the diagrams from Software Engineering course to explain flow control for many programming languages. Here is the list:

|##| Language   | Programming Paradigm
|-:|:----------:|:---------------------------
|01| HTML+CSS   | Descriptive
|02| JavaScript | Functional
|03| SQL        | Descriptive
|04| Dart       | Object Oriented
|05| Python     | Multi-paradigm
|06| Ruby       | Object-Oriented
|07| Julia      | Functional
|08| Go         | Functional
|09| PHP        | Object-Oriented
|10| Rust       | Functional
|11| C          | Structured
|12| C++        | Object Oriented
|13| Java       | Object Oriented
|14| Scala      | Multi-paradigm

# How to chose?

There are so many languages to chose from. What are we going to learn first? My answer is: "it depends". And this is the answer you will get from most programming instructors. 

## Scientific application

For understanding data structures and algorithms used in scientific papers we recommend two languages:

* julia
* python

## Web development

For web development you can use almost any language but you can do front-end with a limited number of languages. We recommend one of these languages:

**Front-End**

* HTML+CSS
* JavaScript

**Back-End**

* JavaScript
* Ruby
* PHP
* Python

## System programming

For system programming you can consider: desktop applications or command line applications. But we have chosen to bundle these in "native applications" and "scripts. 

**Native apps**

The native applications are usually compiled and can have GUI or command line. 

* C++
* C#
* Rust
* Dart

**Scripting**

A script can take parameters and can be used as a command. Usually a script is a single file.

* Bash
* Python
* Ruby

**Note:** On Windows you can do "Power Shell" or "Batch" scripts but we do not teach these languages yet, so if you learn on our website you will be able to use Python or Ruby to make script applications.

**Tutorial:** [Programming Languages](https://sagecode.net/programming.html)