Language Critique

  1. C
  2. C++
  3. Rexx
  4. Java
  5. C#
  6. Julia
  7. Python
  8. Power Shell
  1. Go
  2. Dart
  3. JavaScript
  4. Rust
  5. Swift
  6. Kotlin
  7. Mojo
  1. What languages have you learned in the order of your learning?
  2. Tell me the approximate amount of code you wrote in those languages.
  3. Are there some language features that you adore and those that you don't care for, and some that are just annoying?
  1. Comprehensive
  2. Libraries and documentation
  3. Brilliant packaging design to share code
  4. Multi-threading a fundamental aspect of the language
  5. Memory ownership (garbage collection)
  6. Probably the first modern language that all other languages are now compared to
  7. An opinionated take on exceptions
  8. Machine independence
  1. Streams for processing collections declaratively and functionally in 8
  2. New module system in 9
  3. Local variable type inference
  4. Text blocks
  5. Switch expressions
  6. Sealed classes

In what ways Java improved upon C++?

Search for: In what ways Java improved upon C++?

  1. What is a typical sequence of processing a collection using filter, map, and a finishing function like sum?
  2. What are terminal functions like sum?
  3. Can you create your own terminal functions?
  4. What is lazy processing aspect of streams?
  5. What is a collector?
  6. What are key classes in streams?
  7. What are similarities between java streams, python list expressions, pandas and spark data frames?

What is the relationship between a lambda function and a class in Java?

  1. filter
  2. map
  3. terminal functions
  4. collectors
  5. sort
  6. comparators
  7. generate
  8. suppliers
  9. consumers
  10. foreach

See if this works

  1. Complexity: Object-oriented languages can sometimes lead to complex class hierarchies and design patterns, which can make code harder to understand and maintain, especially in large projects.
  2. Overuse of Inheritance: Inheritance, one of the core principles of object-oriented programming, can be overused, leading to deep and rigid class hierarchies that are challenging to modify and extend.
  3. Tight Coupling: Object-oriented designs can sometimes lead to tight coupling between classes, making it difficult to change one class without affecting others, which can reduce flexibility and reusability.
  4. Inefficiency: Object-oriented languages may introduce performance overhead due to dynamic dispatch, virtual method calls, and other runtime features.
  5. Verbosity: Some object-oriented languages, like Java, can be more verbose than other paradigms, leading to more code to accomplish certain tasks.
  6. Mutable State: Object-oriented languages often encourage mutable state, which can lead to more challenging debugging and concurrency issues.
  7. Difficulty in Parallelization: Designing concurrent and parallel systems in an object-oriented way can be challenging due to potential shared mutable state and synchronization issues.
  8. Learning Curve: Object-oriented concepts like encapsulation, inheritance, and polymorphism can be more difficult to grasp for beginners compared to other paradigms.
  9. Focus on Implementation Details: Object-oriented languages often emphasize implementation details, which can lead to less focus on higher-level abstractions and domain modeling.
  10. Scalability: Some object-oriented designs may not scale well for very large systems or certain domains.
  1. Why is "new" considered harmful in java and other object oriented languages?
  2. What is the difference between a constructor method like "new" and the other methods in a Java class?
  1. You forced an implementation on the consumer
  2. Because the constructor is not virtual and cannot be replaced at run time
  3. Further it cannot be parameterized by doing so

A conversation with ChatGPT on this topic

  1. CORBA
  2. SOAP
  3. EJBs
  4. RMI
  5. REST
  6. Microservices

What do you think of the "reasoning" debate in programming languages?

Search for: What do you think of the "reasoning" debate in programming languages?

  1. Coming from academic mathematical communities to keep the implementations closer to the theory and proposals
  2. Functions are objects (also called first class functions)
  3. Immutability of data where functions receive and return
  4. High order Functions like filter, map, reduce, fold etc to process collections
  1. Haskell,
  2. Lisp,
  3. Clojure,
  4. Erlang,
  5. and Scala
  1. Duck typing
  2. List comprehensions
  3. Generators and yield
  4. Closures
  5. Decorators
  6. With statement

REPL - Read-Eval-Print Loop