1.1 Software development

Everything required to today’s software development / programming world - from various languages to best-practices

To develop software in the modern world, you need not only to work with a single programming language, but also understand everything around it.

General

This video will give you a short overview over terms and concepts in computational science and software development. After this video you should have a broad overview of how computers work, what programming languages do, what the cloud does and so on. It is a very broad subject matter but will give you the explanation to lots of commonly used terms.

Version control / git

How to keep track of changes in your software code? How to work with multiple people on the same codebase?

There are multiple tools out there, but git is by far the most popular.

Your main takeaway from this video should be what commits and branches in git are, why working with branches is so advantageous and that you can merge branches at your leisure. Git has the benefit of project being able to be worked on by multiple people from multiple angles without necessarily interfering with each other. It also allows to rollback on any commit point so mistakes or decisions in general can easily be reverted. So in short, project management with Git allows for a lot of flexibility and adaptability on the fly and is a backbone of modern programming.

This video is a bit more in detail - Here you can learn how to actually use git commands to create and manage your repository and branches, how to solve merge conflicts and a couple of nifty little tips like stashing your changes. If you intend to work with git, it is recommended that you memorize the different commands shown in this video, as they are all crucial.

Operating systems

In the Industrial IoT, you will mainly encounter three types of operating systems:

  1. Linux
  2. Windows
  3. Embedded

Linux

Here you are getting a short introduction in what Linux is, where it came from, what the upsides of it are and some basic CLI commands for Linux terminals.

Introduction into programming languages

There are various methods to design a programming language. Here an excerpt from Wikipedia:

imperative in which the programmer instructs the machine how to change its state,

  • procedural which groups instructions into procedures,
  • object-oriented which groups instructions with the part of the state they operate on,

declarative in which the programmer merely declares properties of the desired result, but not how to compute it

  • functional in which the desired result is declared as the value of a series of function applications,
  • logic in which the desired result is declared as the answer to a question about a system of facts and rules,
  • mathematical in which the desired result is declared as the solution of an optimization problem
  • reactive in which the desired result is declared with data streams and the propagation of change

Examples

  1. Python in 100 Seconds
  2. C in 100 Seconds
  3. Go in 100 Seconds
  4. Bash in 100 Seconds
  5. Haskell in 100 Seconds
  6. HTML in 100 Seconds

If you are interested in more details explanation, you can also watch this 45 Minute Lecture, which goes over four different programming paradigms with actual programming examples, where the lecturer goes over the details of how there programs work and the pros and cons of each paradigm.

Programming IDEs

IDE is short term for “integrated development environment”. It describes applications, which are used to edit code and usually have nifty functions to help you write and manage code more efficiently.

Here is a video introducing you to Visual Studio Code, which is a freeware IDE from Microsoft and a great IDE to do your first steps as a developer. You will learn what basics this IDE can do and how it makes your work easier.

We hope you learned something new in this overview of software development topics. If you would like some specific topic to be covered in more detail, please let us know.

Last modified October 5, 2022: Historian article (#107) (5f30dc0)