M
M
Maxim2022-02-18 08:14:04
IT education
Maxim, 2022-02-18 08:14:04

How to start learning programming for a student?

Hello. I am 14 years old and some time ago I got acquainted with the most basic syntax of the java language, because then I had a desire and a goal to learn how to develop for android, I have no particular motivation to study further, then I got lost. Although I was very interested. Now I decided to start all over again, and most likely change direction and language, although I don’t know. Now I’m generally lost and don’t know in which direction I want to develop, but I’m definitely not game dev, because I’m not interested in games. Or is it better to just start learning python, because it is relatively easy to learn, but it has a lot of uses? Please advise the direction for development, as well as the programming language and preferably free resources / books. Is Linux worth it? I installed it several times before and realized that there is everything for programming, but with everyday tasks it can be difficult, but it was also very interesting to study it. Thank you in advance!

Answer the question

In order to leave comments, you need to log in

6 answer(s)
M
Michael, 2022-02-18
@Akela_wolf

About Linux. Yes, definitely worth it in my opinion. Experience in Linux will give you a deeper understanding of how the operating system functions, the ability to look "under the hood", to see in practice such a thing as different implementations of the same thing (for example, different window managers - they have the same essence, but each implements this task differently ways). Therefore, I advise something "configurable", such as ArchLinux (Gentoo is already very, very hardcore, it will be hard for a beginner to use it). As for everyday tasks - yes, there are no insurmountable difficulties there, if you do not take some direct specifics. Browser - yes. Watching videos, listening to music - yes. Work with documents - is. Working with graphics and 3D modeling - yes. There are also games, although sometimes with jokes (but it is said that they are not interested in games,
About language. In general, the programming language is chosen for the task. If you want to do, for example, system programming (drivers, file systems, loaders, OS kernel, virtual machines / hypervisors, DBMS, etc.), then this is C / C ++. If you want to work with neural networks, Python is good there. Frontend - without Javascript / Typescript now nowhere. But if we talk about a general purpose programming language (in which you can write a lot of application programs), then I would recommend the following criteria:

  • Statically typed . It is especially important, in my opinion, at the beginning of training, as it lays the foundation - the ability to write code strictly. Dynamically typed languages ​​such as PHP, Python, Javascript, etc. allow the programmer to write code "at random", which is fraught with subtle errors, form "bad habits" that will then interfere.
  • Encouraging declarative (functional) programming style . The functional style of programming is now gaining popularity because it allows you to write more complex programs and it is easier to test them in separate parts.
  • Cross-platform . That is, the ability to create programs for Windows, Linux, MacOS, Android, etc. This is not so much about the language itself, but about its environment - the presence of cross-platform libraries and development tools.
  • Demand . Well, everything is simple here - to teach, for example, Pascal is now hardly advisable - there is practically no real development on it. Therefore, it is better to study something that you will later encounter in practice (in other people's projects) and with which it will be easier to find like-minded people to jointly develop large projects. And, in the future, build a career in this area.

So, let's see what we have in this regard:
  1. C/C++ . Statically typed and pretty strict. Very complicated. It can be used to write programs in any style, including metaprogramming. Cross-platform as hell. Allows you to solve problems as close to the hardware as possible. Limited demand. A unique niche is system programming and microcontroller programming. Due to its very high complexity - I personally do not recommend it.
  2. Javascript/Typescript . Dynamically typed (Typescript has static typing, but with Javascript-inherited gags). Supports both imperative and declarative programming. Primarily intended for browsers, although node.js is now cross-platform. Demanded primarily at the front. So you should immediately add HTML / CSS and some front-end framework to it in terms of learning: Angular / React / Vue, etc. Also suitable for writing backend (node.js), desktop applications (Electron), mobile applications (React Native). A promising direction, but personally I would not recommend it as a first language because of a certain mess in the ecosystem. It is easy to pick up "bad habits" in this direction.
  3. C# . Statically typed, supports declarative programming, has an implementation for Linux (Mono), but is generally sharpened for Windows. It is quite in demand, in particular it is used in Unity (engine for game development). I don’t have a personal opinion about it, because I don’t use it in my work.
  4. java . Statically typed, supports declarative programming, runs on everything that has a JVM (including Android). Write once, run anywhere. It is in demand mainly in a harsh enterprise, in large projects for serious business. Also used on the web.
  5. Kotlin . Improved Java developed by jetBrains. Statically typed, supports declarative programming very well. Allows you to easily write asynchronous code (coroutines). It runs in the same place as Java (because it uses the same JVM), plus it has the ability to compile to JavaScript and native code for Windows/Linux/MacOS. Kotlin for JVM is quite a mature solution, Kotlin Multiplatform is not yet, but is developing rapidly. It is the official language for Android development. It is not yet in great demand (mainly in the field of mobile development), but its popularity is growing and it is beginning to push Java into its traditional segment. In the future, it can become a language capable of covering most of the areas of applied programming: backend, frontend, desktop and mobile applications. In my opinion, it is promising.
  6. Scala . Another improved Java. Statically typed, supports declarative programming very well. Cross-platform like Java (now there seems to be a compiler in JS, like Kotlin). Complicated. It is very easy to write constructions in which "you can't figure it out without half a liter". Due to complexity, there is little demand. There are unique features, but not so many compared to Kotlin (most of the really popular features of the Rock are in Kotlin). It is worth getting acquainted in the future, I will not recommend it as the main language.
  7. Haskell . A statically typed, declarative language (doesn't just support declarative programming - it's hard to write otherwise). Cross-platform. Demanded in specific areas. From my point of view - the king of functional programming and therefore complex (mathematical abstractions in full growth). It's also worth reading just to feel the full power of functional programming - the brain flips very well and allows you to better understand other languages. As the main language - I will not recommend.
  8. Python . Dynamically typed, supports declarative programming, cross-platform. It is quite in demand on the web, in scientific research (neural networks). I have little experience with it, but I would not recommend it because of dynamic typing.
  9. PHP . Dynamically typed, supports declarative programming, cross-platform. It is in high demand, but practically only on the web (website development). Very low entry threshold, which is why there is a lot of bad code (although worthy frameworks have appeared now - Symfony, Laravel, Doctrine, etc.). As a language to learn, I don't recommend it.

Of course, there are other languages ​​that I have not mentioned due to the fact that I am not familiar (or poorly familiar) with them.
From the above list, I would first of all single out C #, Typescript, Kotlin. My personal choice at this stage of my career is Kotlin, but of course it's up to you to think, compare and choose.
Even in the future, it is worth getting acquainted with such a topic as a DBMS and the SQL query language. On the web, as I already wrote, HTML / CSS is useful. Well, further specific specific things, already selected for a specific task.
Now about books. I will not recommend books on languages. But I will name a few books that, in my opinion, should be read by any programmer:
  1. E. Hunt, D. Thomas. Pragmatic programmer
  2. R. Martin. Clean code.
  3. As you gain experience: R. Martin. Clean architecture
  4. If you want to become a professional programmer: R. Martin. Ideal programmer
  5. A complex but nevertheless clever book: S. McConnell. Perfect code

This is what will come in handy in any case. And then - it all depends on the chosen language and the area of ​​\u200b\u200bits use.

D
Dmitry Roo, 2022-02-18
@xez

Study everything that is interesting, do not study anything that is not interesting: this is how you win.

H
HemulGM, 2022-02-18
@HemulGM

From the study of the school curriculum

R
Rst0, 2022-02-18
@Rst0

You need to try the maximum number of options yourself - it will become clear in practice.
Linux - definitely yes.
Install a virtual machine and work / experiment on two at the same time.
or three.
VMware Workstation 16 Player

A
AVKor, 2022-02-18
@AVKor

the goal is to learn how to develop for android

It didn't start there.
Now I decided to start all over again, and most likely change direction and language

What is the "direction"?
The first PL is taught not to make money on it (and even at the age of 14), but to master the basic concepts of programming.
Java as a first language is a poor choice.
Please advise direction for development

You can talk about development when there is a base. Until she is gone.
as well as a programming language

Good old Pascal (Free Pascal, if we talk about a specific implementation). Still remains the best version of the first YP.
Or is it better to just start learning python

It is possible from it, but there is a lot of superfluous and dynamic typing for the first PL. It is better to master the concept of static typing from the very beginning.
but at the same time where it is used a lot?

The first PL is for learning the basics, not for work. Many places, few places or nowhere at all does not play any role here.

S
Saboteur, 2022-02-18
@saboteur_kiev

Maxim , It is not very difficult to learn to the level of a trainee who can write the simplest programs. And at this level, the basic concepts in all languages ​​are plus or minus the same.
Therefore, it does not matter at all which language you will have first.
Try a couple of months to do some things that are interesting to you in python. Then try to make them in java. Try to add technologies (database)
You can not work on Linux, you can put it on a virtual machine and run software on it, for example, the same database or web server.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question