Upgrade to Pro — share decks privately, control downloads, hide ads and more …

.NET Day 2026 The Past, Present and Future of P...

Avatar for .NET Day .NET Day
August 31, 2026

.NET Day 2026 The Past, Present and Future of Programming Languages

Avatar for .NET Day

.NET Day

August 31, 2026

More Decks by .NET Day

Other Decks in Technology

Transcript

  1. He spends every hour he can inside the computer lab.

    He has learned Excel, AutoCAD, Java, C++, and Python , taking comfort in the clear logic of code, input and output, instruction and command.
  2. top_5 = {" Python", top_5 = {" C ", top_5

    = {" C++ ", top_5 = {" Java ", top_5 = {" C# "} for ranking in permutations(top_5): print(ranking)
  3. 1 2 3 4 5 6 7 8 9 10

    Python C C++ Java C# JavaScript Visual Basic SQL R Rust 18.53% 11.10% 8.62% 8.25% 4.09% 2.63% 2.18% 1.88% 1.56% 1.45%
  4. 1 2 3 4 5 6 7 8 9 10

    Python C C++ Java C# JavaScript Visual Basic SQL R Rust ~60%
  5. Python C C++ Java C# JavaScript Visual Basic SQL R

    Rust Delphi/Object Pascal Scratch PHP Go Fortran Ruby Swift Perl COBOL Assembly language
  6. Python C C++ Java C# JavaScript Visual Basic SQL R

    Rust Delphi/Object Pascal Scratch PHP Go Fortran Ruby Swift Perl COBOL
  7. Python C C++ Java C# JavaScript Visual Basic SQL R

    Rust Delphi Scratch PHP Go Fortran Ruby Swift Perl COBOL
  8. Python C C++ Java C# JavaScript Visual Basic SQL R

    Rust Delphi Scratch PHP Go Fortran Ruby Swift Perl COBOL
  9. Python C C++ Java C# JavaScript Visual Basic SQL R

    Rust Delphi Scratch PHP Go Fortran Ruby Swift Perl COBOL
  10. Change always comes later than we think it should. Jean-Luc

    Picard blendermarket.com/products/uss-enterprise-ncc-1701-d
  11. Movement in our top 20 is relatively rare. Shifts within

    our top 5 are even more so. redmonk.com/sogrady/2026/04/14/language-rankings-1-26
  12. JavaScript Python Java PHP C# TypeScript CSS C++ Ruby C

    Swift Go R Shell Kotlin Scala PowerShell Dart Objective-C Rust
  13. JavaScript Python Java PHP C# TypeScript CSS C++ Ruby C

    Swift Go R Bash Kotlin Scala PowerShell Dart Objective-C Rust
  14. JavaScript Python Java PHP C# TypeScript CSS C++ Ruby C

    Swift Go R Bash Kotlin Scala PowerShell Dart Objective-C Rust
  15. JavaScript Python Java PHP C# TypeScript CSS C++ Ruby C

    Swift Go R Bash Kotlin Scala PowerShell Dart Objective-C Rust
  16. Anomalously low worth of pull requests from GitHub. It could

    be that while code creation is accelerating, the percentage of code committed to open repositories is declining. redmonk.com/sogrady/2026/04/14/language-rankings-1-26
  17. Stack Overflow’s position and prominence in our rankings has also

    come into question. redmonk.com/sogrady/2026/04/14/language-rankings-1-26
  18. From this you can see that questions peaked in 2016

    and have been in decline since. It is clear that the usage dramatically decreased post 2023 when ChatGPT became widely available. The number of questions asked are now about 10% what they were at Stack Overflow’s peak. redmonk.com/rstephens/2025/06/18/stackoverflow
  19. Python Java C++ SQL C# JavaScript TypeScript C Shell Go

    R PHP Kotlin Rust Dart Swift Ruby HTML Objective-C MATLAB
  20. Python Java C++ SQL C# JavaScript TypeScript C Bash Go

    R PHP Kotlin Rust Dart Swift Ruby HTML Objective-C MATLAB
  21. Python Java C++ SQL C# JavaScript TypeScript C Bash Go

    R PHP Kotlin Rust Dart Swift Ruby HTML Objective-C MATLAB
  22. Python Java C++ SQL C# JavaScript TypeScript C Bash Go

    R PHP Kotlin Rust Dart Swift Ruby HTML Objective-C MATLAB
  23. There are only two kinds of languages: The ones people

    complain about and the ones nobody uses. Bjarne Stroustrup
  24. Ada Bash C C# C++ COBOL Dart Delphi Fortran Go

    Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  25. Fortran COBOL C SQL MATLAB Ada Objective-C C++ Perl Bash

    Python Visual Basic R PHP Ruby Delphi JavaScript Java C# Scala PowerShell Scratch Go Rust Dart TypeScript Kotlin Swift 1950s 1970s 1980s 1990s 2000s 2010s
  26. Fortran COBOL C SQL MATLAB Ada Objective-C C++ Perl Bash

    Python Visual Basic R PHP Ruby Delphi JavaScript Java C# Scala PowerShell Scratch Go Rust Dart TypeScript Kotlin Swift Baby Boomer Generation X Millennial Generation Z Generation Alpha
  27. Fortran COBOL C SQL MATLAB Ada Objective-C C++ Perl Bash

    Python Visual Basic R PHP Ruby Delphi JavaScript Java C# Scala PowerShell Scratch Go Rust Dart TypeScript Kotlin Swift Baby Boomer Generation X Millennial Generation Z Generation Alpha
  28. We could, of course, use any notation we want; do

    not laugh at notations; invent them, they are powerful. In fact, mathematics is, to a large extent, invention of better notations. Richard Feynman
  29. While languages such as Python, C++, Rust, and even newer

    languages continue to introduce modern language features and programming paradigms, MATLAB can increasingly feel like a language from another era. tiobe.com/tiobe-index
  30. Each successive language incorporates, with a little cleaning up, all

    the features of its predecessors plus a few more.
  31. for

  32. One of the most powerful mechanisms for program structuring [...]

    is the block and procedure concept. Ole-Johan Dahl and C A R Hoare “Hierarchical Program Structures”
  33. A procedure which is capable of giving rise to block

    instances which survive its call will be known as a class; and the instances will be known as objects of that class. Ole-Johan Dahl and C A R Hoare “Hierarchical Program Structures”
  34. Are you going to this year’s Fibonnaci conference? It’s going

    to be as big as the last two put together.
  35. proc fibonacci = (int n) int: if n < 2

    then n else fibonacci(n - 1) + fibonacci(n - 2) fi
  36. Coroutines are subroutines all at the same level, each acting

    as if it were the master program when in fact there is no master program. The coroutine notion can greatly simplify the conception of a program when its modules do not communicate with each other synchronously.
  37. Iterators are a form of coroutine; however, their use is

    sufficiently constrained that they are implemented using just the program stack.
  38. fibonacci = iter () yields (int) Fn_2: int := 0

    yield (Fn_2) Fn_1: int := 1 yield (Fn_1) while true do Fn: int := Fn_1 + Fn_2 yield (Fn) Fn_2, Fn_1 := Fn_1, Fn end end fibonacci
  39. IEnumerable<int> fibonacci() { int Fn_2 = 0; yield return Fn_2;

    int Fn_1 = 1; yield return Fn_1; while (true) { int Fn = Fn_1 + Fn_2; yield return Fn; (Fn_2, Fn_1) = (Fn_1, Fn); } }
  40. function* fibonacci() { let Fn_2 = 0; yield Fn_2; let

    Fn_1 = 1; yield Fn_1; while (true) { let Fn = Fn_1 + Fn_2; yield Fn; [Fn_2, Fn_1] = [Fn_1, Fn]; } }
  41. function* fibonacci(): Iterator<number> { let Fn_2: number = 0; yield

    Fn_2; let Fn_1: number = 1; yield Fn_1; while (true) { let Fn: number = Fn_1 + Fn_2; yield Fn; [Fn_2, Fn_1] = [Fn_1, Fn]; } }
  42. Von Neumann programming languages use variables to imitate the computer’s

    storage cells; control statements elaborate its jump and test instructions; and assignment statements imitate its fetching, storing, and arithmetic.
  43. Ada Bash C C# C++ COBOL Dart Delphi Fortran Go

    Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  44. Ada Bash C C# C++ COBOL Dart Delphi Fortran Go

    Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  45. Ada Bash C C# C++ COBOL Dart Delphi Fortran Go

    Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  46. Ada Bash C C# C++ COBOL Dart Delphi Fortran Go

    Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  47. (define (fibonacci (lambda (n) (cond ((< n 2) n) (t

    (+ (fibonacci (- n 1)) (fibonacci (- n 2))))))))
  48. (defun fibonacci (n) (cond ((< n 2) n) (t (+

    (fibonacci (- n 1)) (fibonacci (- n 2))))))
  49. (defun fibonacci (n) (if (< n 2) n (+ (fibonacci

    (- n 1)) (fibonacci (- n 2)))))
  50. a i

  51. Machine learning algorithm walks into a bar. Bartender asks, “What’ll

    you have?” Algorithm says, “What’s everyone else having?”
  52. AI’s ability to write code in a language is proportional

    to how much of that language it’s seen. AI has seen tons of JavaScript, Python, and TypeScript so it’s great at writing them. New languages are actually disadvantaged. Anders Hejlsberg github.blog/developer-skills/programming-languages-and-frameworks/typescripts-rise-in-the-ai-era-insights-from-lead-architect-anders-hejlsberg
  53. Things will move to where you don’t even bother doing

    coding. The AI just creates the binary directly. AI can create a much more efficient binary than can be done by any compiler. Elon Musk
  54. something  { programming languages, LLMs, natural language, physics, compilers,

    hardware, VMs, security, platforms, optimisation, toolchains, ... }
  55. 1GL 011111110100010101001100010001100010000100010000 000000000000000000000000000000000001000000111110 000000010000000000000000000000000000000000000000 000000000000000000000000000000000000011100001111 111111111111111111111000111100000000000000000000 000000000000000000000100000000000000000000000000 010000000000111111111111111111111111100010110000 111111111111111111111111100010100000000100000000 000000101110000000000000001011110000000000000001

    000000000000001100000000000000000011000100000000 000000010000000000000011010000000000000000110101 000000000000000100000000000000110110000000000000 001101110000000000000001000000000000001110000000 000000000011100100000000000000010000000000000011 101000000000000000111011000000000000000100000000 000000111100000000000000001111010000000000000001 000000000000001111100000000000000011111100000000 000000010000000000000100000000000000000001000001 000000000000000100000000000001000010000000000000 010000110000000000000001000000000000010001000000 000000000100010100000000000000010000000000000100 011000000000000001000111000000000000000100000000 000001001000000000000000010010010000000000000001
  56. 2GL 1GL stack::top() const [clone .cold]: push r14 mov edi,0x10

    push rbx push rax call 401030 <__cxa_allocate_exception@plt> mov esi,0x402004 mov rdi,rax mov rbx,rax call 401080 <std::logic_error::logic_error(char const*)@plt> mov edx,0x401070 mov esi,0x403da0 mov rdi,rbx call 4010a0 <__cxa_throw@plt> mov r14,rax mov rdi,rbx call 401040 <__cxa_free_exception@plt> mov rdi,r14 call 4010b0 <_Unwind_Resume@plt> nop stack::pop() [clone .cold]: push r14 mov edi,0x10 push rbx push rax call 401030 <__cxa_allocate_exception@plt> mov esi,0x40201c mov rdi,rax mov rbx,rax call 401080 <std::logic_error::logic_error(char const*)@plt> mov edx,0x401070 mov esi,0x403da0 mov rdi,rbx call 4010a0 <__cxa_throw@plt> mov r14,rax mov rdi,rbx call 401040 <__cxa_free_exception@plt> mov rdi,r14 call 4010b0 <_Unwind_Resume@plt> nop WORD PTR [rax+rax*1+0x0] stack::push(void* const&): push rbp mov rbp,rsi push rbx mov rbx,rdi mov edi,0x10 sub rsp,0x8 call 401050 <operator new(unsigned long)@plt> movq xmm0,QWORD PTR [rbx] movhps xmm0,QWORD PTR [rbp+0x0] mov QWORD PTR [rbx],rax movups XMMWORD PTR [rax],xmm0 add rsp,0x8 pop rbx pop rbp ret nop nop DWORD PTR [rax+0x0]
  57. 3GL 2GL 1GL template<typename T> class stack { public: std::size_t

    depth() const { return items.size(); } const T & top() const { if (items.empty()) throw std::logic_error("stack::top: empty"); return items.back(); } void push(const T & item) { items.push_back(item); } void pop() { if (items.empty()) throw std::logic_error("stack::pop: empty"); items.pop_back(); } private: std::vector<T> items; };
  58. A stack is a LIFO abstract data type with the

    following public behaviour: NL 3GL 2GL 1GL * A stack is initially empty * depth() returns the number of elements in the stack * top() returns the top element if present, otherwise it fails with an exception * push(item) adds a new element, item, to the top of the stack * pop() removes and returns the top element of the stack if present, otherwise it fails with an exception * Elements of a given stack are all of the same type A stack's internal representation is private. * The representation should be memory efficient * The representation should support efficient end addition and removal
  59. new MDA 3GL 2GL 1GL Empty pop [depth = 1]

    push(item) Non-Empty push pop [depth > 1] top
  60. Maths  T •  Stack { new: Stack[T], push:

    Stack[T]  T → Stack[T], pop: Stack[T] ⇀ Stack[T], depth: Stack[T] → Integer, top: Stack[T] ⇀ T 3GL 2GL 1GL }
  61. 3GL 2GL 1GL Ada Bash C C# C++ COBOL Dart

    Delphi Fortran Go Java JavaScript Kotlin MATLAB Objective-C Perl PHP PowerShell Python R Ruby Rust Scala Scratch SQL Swift TypeScript Visual Basic
  62. Betteridge’s law, noun ▪ The maxim that any headline that

    ends in a question mark can be answered “No” facebook.com/WordFriday/posts/383363405084956