[RUBY] Don't learn Java and C ++! !! Languages for beginners [more carefully selected]

Notes

This article contains the following elements: Please be careful if you are not good at it.

--Hot diss to Python --There was no C language --I'm scared because I don't know much about JDK issues --Styles that do not mention so-called functional languages (F # or Scala?)

Introduction

Don't learn Java and C ++! !! Languages for beginners [carefully selected]

There is an article saying, but as a C ++ er, I have to show my regret. After that, I will introduce the recommended languages for those who are starting programming. Eh, C ++? Not recommended for beginners.

Requirements for languages recommended for beginners

--The population is decent --You can easily build a development environment even on Windows --You can see the operation result visually --No need to compile --Language standards have been updated within at least 5 years --Language standards are backwards compatible --Abundant Japanese materials --Can be developed even on a weak PC

Population is decent

There are many people who make programming languages, so there can be an infinite number of programming languages, but I can't recommend a language that doesn't have a certain number of users.

You can easily build a development environment even on Windows

For example, I often encounter situations where Python doesn't work on Windows for some reason (only me ...?). It is impossible for beginners to read the error statement and isolate the cause.

It works perfectly on Windows in other languages! There are few other than that. I think Ruby is doing a lot, but even so, especially when audio and graphics are involved, it is often said that it is cannot load such file (for some reason, ruby2d cannot be used with msys2 mingw64 ruby, [chat](https: // gitter) Inquiring at .im / ruby2d / ruby2d)).

You can see the operation result visually

Beginners can't handle consoles properly, and they can't be impressed by the words "Hello world!".

It is desirable to be easily appealed to such visual perception that the figure moves.

This is not possible in C ++ because it is extremely difficult to create a GUI (2D graphics standardization has failed).

It is desirable to have a 2D drawing library in the language standard library, or a 2D library that is well maintained and has users.

No need to compile

I think that even people who are familiar with compiling are still troublesome. Of course, it can be automated in various ways, but this time it is troublesome to build automation.

By the way, those who can't bother are probably not very good at programming.

Language standards have been updated within at least 5 years

The programming language should also be worked hard and various improvements should be made every day. Even C ++, which is somewhat conservative, is updated every three years, so languages that are not updated even after five years are dead. e? C language? At the end of 2017, I renamed the content exactly the same as C11, but that is not the case.

The language standard is backwards compatible

If a beginner tries hard to write and move according to the information that came out, motivation will be blown away if it does not work. Even if you are not a beginner, your heart will break. Even if it is unavoidable to have a function that becomes deprecated due to security concerns, we do not recommend a language that bites a huge breaking change like Python.

Abundant Japanese materials

To learn a programming language that I don't even understand, studying with materials that are not my mother tongue or my brain gets flat.

Can be developed even on a weak PC

Many people are in trouble even if they are told to buy a PC that exceeds 150,000 for programming. It seems to be painful because Unity brings a lot of memory. Most of the PCs on the market have 4GB of memory.

Language you want to recommend

Unfortunately, my narrow knowledge could only raise one language that meets these requirements.

JavaScript

After all it is big that it works on the browser. You can draw a figure by hitting the Canvas API. By setting the execution environment to a browser, if you install Chrome or Firefox (if you are lucky, it is already installed), the setup is almost completed. Breakout game using JavaScript as it is --Game development | MDN There is a document in MDN that uses the Canvas API in Step-by-Step, which is really good.

The language population is also large at an uncalculable level, and development is active.

Language I wanted to recommend

Ruby

Ruby itself is a pretty good language, and there are many Japanese materials because the developers are Japanese. In terms of graphics, Ruby2d seems to be a pretty good library, if it works. Move.

Examples of languages that cannot be recommended

C++

There is no doubt (conviction) because C ++ er says it. Visual Studio simplifies the process for creating console applications, but it's not suitable for using external libraries. To use external libraries properly, you need the help of another language called CMake. It's not terribly difficult, but it's certainly more difficult than other languages.

I don't think C ++ itself is extremely difficult to use C ++ 17 or later (C ++ er standard), but it is painful that there is a lot of old information and there is no decent introductory book. I feel like it.

The graphic library itself has opennframeworks and DX library.

C#

Unity is the most used library in the gaming industry. This can be written in C #, but there was a problem that the version of C # that can be used in Unity is extremely old. There has been a movement to follow the new C # since about two years ago, but can we really catch up with the evolution of C #?

I think C # itself is not bad for writing in C # 7.0 or C # 8.0, but it seems that it is easy to come across old information.

Java

It continues to evolve in a widely used language. But! I feel that there is a split between the forces that stop at (Oracle) JDK 8 and the forces that move to OpenJDK after the Oracle JDK vs OpenJDK problem. In the same documentation for the language Scala that runs on the JVM, JDK 8 is included. As a C ++ er, I'm more concerned about the JVM level mess than the language itself.

By the way, I think that OpenJDK can use chocolatey for the problem that you have to put it in your PATH by yourself.

I feel that 2D graphics are in the language standard library.

Recommended Posts

Don't learn Java and C ++! !! Languages for beginners [more carefully selected]
Benchmark for C, Java and Python with prime factorization
Learn about python's print function and strings for beginners.
How to learn TensorFlow for liberal arts and Python beginners
Don't print and import logging for logging
What are the "pipeline" and "{...}" in the Jenkins Pipeline pipeline {...} (for Groovy beginners, for experienced languages)