Skip to content

Latest commit

 

History

History
166 lines (156 loc) · 4.11 KB

20230918.md

File metadata and controls

166 lines (156 loc) · 4.11 KB

Weekly Discussion - September 18th 2023

What was your first programming language?

What was your first programming language? If you had to start over, would you learn the same first language again? What are your favorite programming language(s)? Are there certain projects you've worked on that made more sense to write in a certain language?

First programming languages?

  • CJ
    • CSS / HTML - 2003
    • ActionScript - 2005
    • PHP - 2005
  • ActionScript
    • 2000
    • 1998
    • 2008
  • Javascript
    • 2015
    • 2017
    • 2019
    • 2023
  • Basic
    • 1989
    • 1983
    • 1987
    • 1972
    • 1990
    • Late 80s
    • Late 90s
  • C++
    • 2022
    • 2010
    • 2023
    • 1996
  • C
    • 2010
    • 2014
    • 2013
    • 2012
  • Perl
    • 2000s
  • PHP
    • 1998
    • 1997
    • 2012
    • 2019
    • 2004
    • 2000
    • 2003
  • Logo
    • Late 90s
  • Swift
    • 2019
  • Python
    • 2020
    • 2023
    • 2017
    • 2019
  • C#
    • 2017
    • 2021
  • Java
    • 2010
    • 2014
    • 2022
  • Visual Basic / VBA / VB.NET
    • 2006
    • Late 90s
  • Object Pascal
    • 2001
  • Turbo Pascal
    • 1992
    • Late 90s
    • 1999
  • Pascal
    • Early 90s
    • 2013
  • Scratch
  • Game Maker
    • 2000s
  • HTML
    • 1999
    • 2021
  • Lua
    • 2019
  • SQL
    • 2009
    • 1995
  • Matlab
    • 2012
  • Assembler
    • 1996
  • Cobol
    • 1996

Types of Programming Languages

  • Systems Programming Languages
    • Close to the "metal" (hardware)
      • Typically have to do manual memory management
        • Pointers
    • Some of the fastest possible resulting code...
    • More control of the resulting code
      • More work
    • Needs to be compiled for a specific CPU target
    • Tried and true, been around for a long time and aren't really going anywhere...
      • C++, C, Assembly
    • Newer Languages
      • Rust, Go, Zig, Carbon
    • Industries where this is used:
      • PC Hardware Manufacturers
        • Device Drivers
        • Operating Systems
      • Medical
        • Health critical devices
          • Pacemaker
        • Imaging
          • X Rays / Cat Scans / MRIs
      • Gaming
      • Manufacturing
      • Robotics
      • Financial Modeling / Stock Trading
      • Many more...
  • Higher Level / Application Focused
    • The target is typically not the hardware directly
    • Sometimes - some kind of intermediary target
      • Bytecode
    • Extreme performance / fine grain control is less important than development speed / developer experience / developer ergonomics
    • Sometimes - interpreted by a runtime
    • Scripting, AOT (Ahead of time), JIT (Just in Time), Runtime Targeted
    • Garbage Collection
      • Automated memory management
    • Typically have multiple target outputs
      • The same codebase can run on many different kinds of devices and operating systems without extra effort
    • Example:
      • Java, Scala, Kotlin, Groovy, Clojure, Jython is compiled into bytecode
        • The target for this bytecode is the JVM (Java Virtual Machine)
        • The compilation result can run anywhere the JVM is supported... BUT the JVM needs to be installed / running for the Java program to run
      • C#, VB.NET, F#, IronPython, Managed C++ is compiled into bytecode
        • The target for this bytecode is the .NET runtime
        • The compilation result can run anywhere the .NET runtime is supported... BUT the .NET runtime needs to be installed / running for the C# program to run

If you had to start over, would you learn the same first language again?

  • CJ

    • No, actionscript is not relevant anymore...
  • If you learned programming more than 10 years ago... there is probably a better programming language to start

    • Except for PHP, you could start there today and still be successful
    • CJ's Suggestions for your first programming language:
      • JavaScript / Web Development
      • Python
      • Java / C#
      • Maybe C++... depending on context
  • There are no really bad choices for your first programming language

    • Concepts overlap and hold true for many different languages
      • Variables / Assignment
      • Loops
      • Conditionals
      • Functions / Methods
        • Program structure
  • Start with OOP

    • Object Oriented Programming
      • Group your program into Objects that model the real world - these objects talk to each other to make a working program
    • C#, Java, C++, JavaScript, Python