Discuss Scratch

Greg8128
Scratcher
500+ posts

Programming language reviews

Post and read reviews of programming languages here.
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
Having opinions is fine, however, you should justify them in one way or another. Don't just say “x is the best language”, refuse to elaborate, and leave.
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
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.
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

Pharynelsius wrote:

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

Greg8128 wrote:

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 about its runtime makes it unsuitable for those use cases?
gosoccerboy5
Scratcher
1000+ posts

Programming language reviews

Sheep_maker wrote:

Pharynelsius wrote:

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
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?)
Greg8128
Scratcher
500+ posts

Programming language reviews

Sheep_maker wrote:

Greg8128 wrote:

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 about its runtime makes it unsuitable for those use cases?
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.
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

gosoccerboy5 wrote:

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?)
Minification isn't usually a major concern
Sheep_maker
Scratcher
1000+ posts

Programming language reviews

gosoccerboy5 wrote:

Sheep_maker wrote:

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?)
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
Geotale
Scratcher
100+ posts

Programming language reviews

gosoccerboy5 wrote:

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.
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?
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

ScolderCreations wrote:

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

uwv wrote:

ok basically javascript 0/10 uh typescript 11/10 everything else is pretty much garbage and i rate 1/10

Greg8128 wrote:

Don't just say “x is the best language”, refuse to elaborate, and leave.
PkmnQ
Scratcher
1000+ posts

Programming language reviews

Raihan142857 wrote:

ScolderCreations wrote:

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).
HTML + CSS + repeated keyboard inputs yes, HTML + CSS no.
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

PkmnQ wrote:

Raihan142857 wrote:

ScolderCreations wrote:

[…]
HTML isn't a programming language, but CSS technically is (when it's used with HTML).
HTML + CSS + repeated keyboard inputs yes, HTML + CSS no.
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 power

Powered by DjangoBB