Tag Archives: Go

Topic 3 – Introduction to Programming

Why do I need to know a programming language?

Because you will develop your software using a programming language.
A programming language is a language that both you and a computer will understand.
It’s a tool for you to express what you want a computer to do.
It’s a tool for you to write instructions of your computer programs.
Without knowledge of a programming language, you cannot develop any software.

I hear that there are many programming languages such as C, C++, C#, Objective-C, Java, Swift, Ruby, Python, JavaScript, PHP, F#, Kotlin,  Clojure, Go, or Lisp.
How many programming languages should I know?

As many as possible. However, at this stage, you should learn about structure of a computer program and a procedure language (e.g. C or C++) first.

What can I do after finishing learning programming language?

You will be able to write a program to tell a computer
– to do a calculation, or
– to count for occurrence of a string, or
– to store and search for a string, or
– to sort a list of numbers, or
– to display an image.

What should I do now?

Please read this Stephen Prata (2011). C Primer Plus. Pearson book.

Alternatively, you can read

– this Stephen Prata (2012). C++ Primer Plus. Pearson book (from Chapter 1 to Chapter 9), or

– this John M. Zelle (2017). Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates book (from Chapter 1 to Chapter 9), or

– this Charles Severance (2013). Python for Informatics: Exploring Information book (from Chapter 1 to Chapter 11), or

– this Chris Pine (2013). Learn to Program: The Facets of Ruby Series. The Pragmatic Bookshelf book (from Chapter 1 to Chapter 11), or

– this Alan A. A. Donovan and Brian W. Kernighan (2015). The Go Programming Language. Addison-Wesley Professional book, and this Nathan Youngman and Roger Peppe (2018). Get Programming with Go. Manning Publications book.

After that if you would like to study system programming in depth then please read

– this Brian W. Kernighan and Dennis M. Ritchie (2016). The C Programming Language. Prentice Hall book, or

– this Michael Kerrisk (2018). The Linux Programming Interface. No Starch Press book.

After that if you would like to get vocabularies and in-depth knowledge about programming, especially the relationship between mathematics and programming, and ideas of functional programming and logic programming then please read

– this Harold Abelson and Gerald Jay Sussman (1996). Structure and Interpretation of Computer Programs. The MIT Press book, or

– these Course Notes.

Terminology Review:

  • Computer Programs.
  • Compilers.
  • Just-In-Time Compilers.
  • Interpreters.
  • Structured Programming.
  • Procedural Programming.
  • Object-Oriented Programming.
  • Functional Programming.
  • Declarative Programming.
  • Logic Programming.
  • Primitive Types: int, float, double, string, date/time, null.
  • Basic Constructs: variables & assignments, pointers, declarations, functions, macro.
  • Control Flow: if/else, while, switch, for, break, continue, recursion, exception, parallelism, signal, jump.
  • User-defined Types: struct, class, type.
  • Data Structures: Arrays, Lists, Linked Lists.
  • Object-Oriented Programming: abstraction, encapsulation, class-based inheritance, prototype-based inheritance, polymorphism.
  • Functional Programming: first-class and higher-order functions, no side effects, recursion.
  • Modularity: files, packages, namespaces, libraries, modules.
  • Concurrency: processes, threads, locks, channels, timers, callbacks, events, promises, event loop.
  • Type system: static type, dynamic type.
  • Error handling: try/catch.
  • Metaprogramming: reflection, template programming, DSL.
    • Clojure.

    After finishing learning about programming languages please click Topic 4 – Introduction to Algorithms and Data Structures to continue.