What's worked in Computer Science: 1999 vs. 2015 (2015)
Legacy and Industry-Specific Languages
- Many critical systems depend on “old” or niche tech: Erlang (telecom), COBOL (banking), MATLAB/FORTRAN (scientific), MUMPS (healthcare).
- Discussion asks what can be learned from why such languages succeed and stay entrenched.
- One view: language adoption and evolution resembles spoken languages—driven by social and historical forces more than technical merit.
Fancy Type Systems and TypeScript
- TypeScript is praised as having “realized” strong typing for the web programming majority, especially those without formal CS background.
- Others argue similar or stronger type systems existed decades earlier; TS’s main achievement is bringing them to the largest practitioner base.
- Debate over how “fancy” TS really is compared to Java/C#/Checker Framework:
- Pro: structural types, unions, mapped types, rich inference, powerful libraries (e.g., type-level SQL).
- Con: it borrows heavily from Java/C#, lacks a formal spec, and can behave in surprising ways.
Static Typing in Dynamic Languages
- Python and JavaScript are gaining optional typing; tools and style guides are making it semi-mandatory in teams.
- Some fear mandatory typing would betray Python’s purpose, predicting a fork or new untyped language.
- Others say “mandatory” in practice still allows escape hatches (
Any, casts), making it less painful than fully static languages. - Types are valued for editor support, onboarding to large codebases, and team coordination, despite added friction.
RISC, CISC, and Instruction Sets
- Strong thread revisiting the article’s “RISC = No”:
- Many now see ARM’s mobile dominance and Apple’s M-series as evidence RISC is a “Yes” or at least “Maybe.”
- Counterpoint: the real divide is x86 vs non‑x86; modern ARM and x86 are both heavily micro‑op based and blur RISC/CISC lines.
- Some emphasize ARM’s fixed-width instructions enabling very wide, efficient decode, contributing to high perf/W.
- Others argue RISC originally mattered when gate budgets were tight; today we can afford complex ISAs plus deep pipelines.
- RISC‑V is cited as a success mainly due to openness rather than “RISC-ness” per se, though tiny RISC‑V cores don’t even use micro‑ops.
- Discussion dives into historical comparisons (R2000 vs 80386), pipeline vs clock speed, process nodes, and microcode, with no single consensus.
Capabilities and Security
- “Capabilities” is clarified as capability-based security (unforgeable tokens that confer specific rights, e.g., file descriptors).
- Mobile app permission prompts are loosely related but mostly implement semi-static, identity-based permissions, not full-blown capability systems.
- Capabilities are seen as elegant but rarely used as the sole basis for real-world security; they appear mainly inside sandboxes and low-level OS code.
Functional Programming vs “Functional Style”
- Many see “pure FP” as a practical “No,” but FP ideas (lambdas, pattern matching, sum types, higher-order APIs) as increasingly mainstream.
- Viewpoint 1: Hybrid languages (Java/C#/JS with FP features) give most FP benefits while staying imperative/OO.
- Viewpoint 2: These hybrids are suboptimal; true FP needs more than lambdas—e.g., expression orientation, immutability by default, persistent data structures, explicit effect management.
- Ongoing debate about what defines FP:
- Some say first-class functions suffice.
- Others insist on stronger conditions like referential transparency and structured effect handling (monads or alternative effect systems).
- Clarification that “records” themselves are not inherently functional; they predate OOP and exist in many paradigms.
- Separate tangent on what makes something “object-oriented,” with no agreement; records in Java are seen by some as anti‑OO because they minimize hidden state/behavior.
Parallelism, GPUs, and Rust
- Question whether GPUs/TPUs “count” as parallelism for the article’s classification.
- One stance: they implement the “wizard in a box” model—parallel kernels written by experts, not general-purpose parallel programming.
- Another: almost all GUI/web apps implicitly use GPU parallelism, plus map‑reduce and SIMD are where parallelism really works.
- Rust is proposed as potentially changing the parallelism picture, with its ownership/borrow system giving strong thread-safety guarantees on top of memory safety.
Neural Networks and Changing Evaluations
- Some suggest NN status would be “Yes” by 2024, noting major deep learning papers around 2014–2015.
- Others stress that neural nets have had multiple hot phases since the 1960s; 2015 was a resurgence built on decades of prior work.
Meta: Updating “What’s Worked” for 2024
- Several commenters want an updated table:
- RISC shifted from “No” (2015) to at least “Maybe.”
- Fancy type systems are more prominent (Rust, advanced TS), arguably moving from “No” to “Maybe/Yes.”
- Functional ideas are now “expected” features in many mainstream languages.
- There is general caution that any yes/maybe/no classification ages quickly and should not be treated as timeless truth.