Discuss Scratch
- Discussion Forums
- » Advanced Topics
- » Programming language reviews
- Greg8128
-
Scratcher
500+ posts
Programming language reviews
Post and read reviews of programming languages here.
Try to include the following within a review:
An example review:
Try to include the following within a review:
- A brief overview of the language
- Strengths, weaknesses, and other quirks of the langauge
- Use cases that the language fits well, and use cases it fits poorly
An example review:
Scratch is a procedural visual programming language with a great emphasis on simplicity.
Scratch is built around the easy-to-grasp concept of “sprites” on a “stage”. Scratch has a powerful set of builtins for using sprites, which encompasses movement, sound, graphics, sensing and more. This makes Scratch easily applicable to many types of simple apps, including animations and simple games.
Scratch, however, makes it difficult to create more complex projects. It does not properly support functional programming “out of the box”, as it has no higher-order functions (or even return values in custom functions). It doesn't support imperative programming that well, either, as it does not even have mutable local variables. However, this is not to say that complex projects are impossible to produce in Scratch
Overall, Scratch is good as an educational language and as a language for simple projects. However, it struggles to be useful for complex projects.
Last edited by Greg8128 (Aug. 15, 2021 19:53:08)
- Sheep_maker
-
Scratcher
1000+ posts
Programming language reviews
The language used to define Minecraft JE functions (.mcfunction) is quite a unique language, much different from the mainstream languages we're used to. It's a very imperative language, deriving from chains of command blocks within the game. In a way, mcfunction is kind of like Scratch where functions cannot return values directly, so return values must be stored in some variable that the caller can access. (Running functions using /function does have a result–the number of commands executed–but it's not very useful)
While mcfunction is a pain (the syntax is very verbose, and simple math can require multiple lines of code), I find it quite fun to use because it requires you to structure code in a nontraditional way. mcfunction is very tied to the game, so the language has a clear use case rather than being yet another general purpose programming language
One of the downsides is that Mojang doesn't guarantee backwards compatibility for datapacks, so datapacks like Sethbling's WorldEdit break within a few versions
While mcfunction is a pain (the syntax is very verbose, and simple math can require multiple lines of code), I find it quite fun to use because it requires you to structure code in a nontraditional way. mcfunction is very tied to the game, so the language has a clear use case rather than being yet another general purpose programming language
One of the downsides is that Mojang doesn't guarantee backwards compatibility for datapacks, so datapacks like Sethbling's WorldEdit break within a few versions
- gosoccerboy5
-
Scratcher
1000+ posts
Programming language reviews
Javascript, or JS, is a widely used text-based programming language that is mainly used for web programming.
JS is a dynamically and loosely typed programming language, which means programmers don't have to worry about the types of their variables as much. It is often used to add functionality to webpages (eg when a user presses a button a popup shows up), but it is now sometimes used on servers and for desktop applications.
Notable features in JS are the large involvement of objects (which can be used as maps), its use of a prototyping OOP system, and its dynamicity.
JS is sometimes taught as a beginner language both for its dynamicity and its ease of use in webpages.
However, Javascript is commonly criticized for its large inconsistencies, and the way it will ‘silently fail’ instead of notifying the developer with an error.
Overall, JS is commonly used, relatively easy to pick up, but isn't as great for larger projects because of its inconsistencies.
- Pharynelsius
-
New Scratcher
9 posts
Programming language reviews
Python is an interpreted high-level general-purpose programming language. Python was designed to emphasize code readability and whitespace. Python has a wide variety of modules on pip, from web development to game design. Python's easy syntax and keywords as well as the hundreds of thousands of modules designed to simplify coding make it incredibly easy to learn. Python has indent based syntax, which can be both good and bad. For one, it makes code more readable, however, it also makes the programming language a lot more rigid. Python is best for data management, and worst for game development since it's interpreted.
Last edited by Pharynelsius (Aug. 15, 2021 23:56:28)
- Greg8128
-
Scratcher
500+ posts
Programming language reviews
Here is a short review of Haskell. I avoid elaborating so that the review stays short.
What is Haskell?
Haskell is a lazy functional programming language with a powerful type system.
An advantage: immutability
Haskell has great support for persistent (immutable) data structures, which is nice to have for any application which may require backtracking.
An advantage: The type system
Types are a way of encoding compiler-enforced guarantees into the program. Haskell's type system does this exceptionally well.
Haskell also has a fair amount of other “nice things” associated with its type system, such as type inference and pattern matching.
A quirk: lazy evaluation
Haskell guarantees that functions do not have side effects, so the compiler and runtime can optimize away any computation whose result is not used. This allows several useful tricks, but also means that performance is sometimes difficult to predict.
A quirk: complexity
The “entirety” of Haskell is very complex. Additionally, GHC (the most widely used compiler) supports many “language extensions” which change the language in one way or another, and libraries have an unusually great ability to change how the language is used. That being said, you can succeed with a small and simple subset of Haskell.
A disadvantage: mutable state
Support for mutable state in Haskell isn't bad, but it could be a lot better. For example, Rust's borrow checker enforces the useful guarantee that a mutable reference to a variable cannot coexist with ANY other reference to the same variable. (This feature is nice because you can use mutable state while keeping safety AND performance). Haskell will get this once linear types become more widely used, but that will take a while.
A disadvantage: the runtime
Haskell's runtime (with features such as its throughput-optimized GC) make it a bad fit for applications like real-time games and device drivers.
What should I use Haskell for?
Haskell is great for writing maintainable code, concurrent code, using data types, and writing parsers. It is an excellent choice for writing compilers. However, it is a poor choice for writing real-time games and a very bad choice for systems / embedded programming.
What is Haskell?
Haskell is a lazy functional programming language with a powerful type system.
An advantage: immutability
Haskell has great support for persistent (immutable) data structures, which is nice to have for any application which may require backtracking.
An advantage: The type system
Types are a way of encoding compiler-enforced guarantees into the program. Haskell's type system does this exceptionally well.
Haskell also has a fair amount of other “nice things” associated with its type system, such as type inference and pattern matching.
A quirk: lazy evaluation
Haskell guarantees that functions do not have side effects, so the compiler and runtime can optimize away any computation whose result is not used. This allows several useful tricks, but also means that performance is sometimes difficult to predict.
A quirk: complexity
The “entirety” of Haskell is very complex. Additionally, GHC (the most widely used compiler) supports many “language extensions” which change the language in one way or another, and libraries have an unusually great ability to change how the language is used. That being said, you can succeed with a small and simple subset of Haskell.
A disadvantage: mutable state
Support for mutable state in Haskell isn't bad, but it could be a lot better. For example, Rust's borrow checker enforces the useful guarantee that a mutable reference to a variable cannot coexist with ANY other reference to the same variable. (This feature is nice because you can use mutable state while keeping safety AND performance). Haskell will get this once linear types become more widely used, but that will take a while.
A disadvantage: the runtime
Haskell's runtime (with features such as its throughput-optimized GC) make it a bad fit for applications like real-time games and device drivers.
What should I use Haskell for?
Haskell is great for writing maintainable code, concurrent code, using data types, and writing parsers. It is an excellent choice for writing compilers. However, it is a poor choice for writing real-time games and a very bad choice for systems / embedded programming.
- Chiroyce
-
Scratcher
1000+ posts
Programming language reviews
I'm going to edit this post and post a review of python here after a few hours …..
- Sheep_maker
-
Scratcher
1000+ posts
Programming language reviews
Python has indent based syntax, which can be both good and bad. For one, it makes code more readable, however, it also makes the programming language a lot more rigid.Other programming languages that aren't indentation sensitive typically still indent by convention (and autoformatters exist that can handle this for them). A programming language with rigid syntax can be seen as a good thing because it means there's only one right way to do things in the language, which some programmers like
A disadvantage: the runtimeWhat about its runtime makes it unsuitable for those use cases?
Haskell's runtime (with features such as its throughput-optimized GC) make it a bad fit for applications like real-time games and device drivers.
- gosoccerboy5
-
Scratcher
1000+ posts
Programming language reviews
I agree with that. For some reason, I think of {} and ; as more aesthetic, even though Python's style is probably more readable to me.Python has indent based syntax, which can be both good and bad. For one, it makes code more readable, however, it also makes the programming language a lot more rigid.Other programming languages that aren't indentation sensitive typically still indent by convention (and autoformatters exist that can handle this for them). A programming language with rigid syntax can be seen as a good thing because it means there's only one right way to do things in the language, which some programmers like
(but doesnt that lower the effectiveness of minification?)
- Greg8128
-
Scratcher
500+ posts
Programming language reviews
Haskell having GC makes it not a good choice for writing performant game engines. For Haskell specifically, the GC also isn't optimized for latency iirc so you might get noticeable pauses due to it.A disadvantage: the runtimeWhat about its runtime makes it unsuitable for those use cases?
Haskell's runtime (with features such as its throughput-optimized GC) make it a bad fit for applications like real-time games and device drivers.
Haskell isn't great as an embedded language due to the above factors, as well as its large runtime and difficulties with constraining memory use.
Read more here: https://github.com/Gabriel439/post-rfc/blob/master/sotu.md
I agree with that. For some reason, I think of {} and ; as more aesthetic, even though Python's style is probably more readable to me.Minification isn't usually a major concern
(but doesnt that lower the effectiveness of minification?)
- Sheep_maker
-
Scratcher
1000+ posts
Programming language reviews
Minification of code is only relevant to JS because it's typically sent over an internet connection to multitudes of users every time, rather than most applications for consumers that usually are just compiled binaries that are downloaded once when installed and for every update. Fortunately, JS isn't an indentation sensitive language…I agree with that. For some reason, I think of {} and ; as more aesthetic, even though Python's style is probably more readable to me.
(but doesnt that lower the effectiveness of minification?)
- Geotale
-
Scratcher
100+ posts
Programming language reviews
While you're completely correct on the “silently fail” thing sometimes, I don't actually know of any large inconsistencies – Could you give some examples or what you mean please?However, Javascript is commonly criticized for its large inconsistencies, and the way it will ‘silently fail’ instead of notifying the developer with an error.
Overall, JS is commonly used, relatively easy to pick up, but isn't as great for larger projects because of its inconsistencies.
- Geotale
-
Scratcher
100+ posts
Programming language reviews
RETURN is an interpreted language with a great emphasis on parenthesis.
RETURN is built around the easy-to-grasp concept of “counting” and “parenthesis”. RETURN has a powerful set of builtins for using parenthesis, which encompasses math, memory, input, output and more. This makes RETURN easily applicable to many types of simple apps, many just being variations of a truth machine.
RETURN, however, makes it difficult to create more complex projects. It does not properly support functional programming “out of the box”, as it has no functions (nor return values because of this). It doesn't support imperative programming that well, either, as it does not even have local variables. However, this is not to say that complex projects are impossible to produce in RETURN
Overall, RETURN is good as a language based around parenthesis and as a language for simple projects, ranging from doing nothing to adding two single digit numbers input by the user. However, it struggles to be useful for complex projects.
Last edited by Geotale (Aug. 21, 2021 02:44:20)
- ScolderCreations
-
Scratcher
1000+ posts
Programming language reviews
HTML is a webpage language that runs on most devices with web browser support. It's the basis for almost all webpages, and it's very important. It's not too difficult to use, but it can be difficult for beginners as most guides out there tend to separate the many features of HTML. HTML works well with JavaScript and CSS, but languages like Python have trouble communicating with it.
- Raihan142857
-
Scratcher
1000+ posts
Programming language reviews
HTML is a webpage language that runs on most devices with web browser support. It's the basis for almost all webpages, and it's very important. It's not too difficult to use, but it can be difficult for beginners as most guides out there tend to separate the many features of HTML. HTML works well with JavaScript and CSS, but languages like Python have trouble communicating with it.HTML isn't a programming language, but CSS technically is (when it's used with HTML).
- uwv
-
Scratcher
1000+ posts
Programming language reviews
ok basically javascript 0/10 uh typescript 11/10 everything else is pretty much garbage and i rate 1/10
- Chiroyce
-
Scratcher
1000+ posts
Programming language reviews
ok basically javascript 0/10 uh typescript 11/10 everything else is pretty much garbage and i rate 1/10
Don't just say “x is the best language”, refuse to elaborate, and leave.
- PkmnQ
-
Scratcher
1000+ posts
Programming language reviews
HTML + CSS + repeated keyboard inputs yes, HTML + CSS no.HTML is a webpage language that runs on most devices with web browser support. It's the basis for almost all webpages, and it's very important. It's not too difficult to use, but it can be difficult for beginners as most guides out there tend to separate the many features of HTML. HTML works well with JavaScript and CSS, but languages like Python have trouble communicating with it.HTML isn't a programming language, but CSS technically is (when it's used with HTML).
- ScratchCatHELLO
-
Scratcher
1000+ posts
Programming language reviews
Python is a general-purpose, interpreted language. It’s used widely for data science and machine learning tasks. It’s one of the easiest languages to learn, and has simple syntax. The pros of python are that it’s easy to learn and quickly write code. It also has a large community, so there’s probably at least one module/library for what you want to do. It’s also great for backend and APIs and can be used for some aspects of frontend. The big con of python is that it’s very slow, being an interpreted language. this makes it bad for applications, OSes (except some parts), or systems programming.
- Sheep_maker
-
Scratcher
1000+ posts
Programming language reviews
I think we can leave out having to manually check checkboxes or whatnot; after all, most programming languages can't do anything if the computer has no powerHTML + CSS + repeated keyboard inputs yes, HTML + CSS no.[…]HTML isn't a programming language, but CSS technically is (when it's used with HTML).
- Discussion Forums
- » Advanced Topics
-
» Programming language reviews










