DEV Community

Discussion on: Welcome Thread - v74

Collapse
 
vyber90 profile image
Néstor Llop Guerra

Hello world! My name is Néstor, I am 17, and I am from Spain. I started programming 5 years ago and I love it.
As I wrote in my summary, I have been self taught since I started, so I do not have any programming studies at all. However I have enough love for programming and time to keep going.

Here you have my past and present as a programmer, for those interested in it:
Starting from the beginning, my first programming language was JavaScript (it is kind of easy to use and setup. Just an HTML file, some code in there, and run). Later (around 6 months later) I knew more about programming languages in general and wanted to learn Java. Did not fully like it because of its long lines (from my point of view Java is not beautiful to see), but since it is so useful and flexible, I made some programs with it.
Two years later, it started an era of language learning. Since I did not actually like Java and I did not enjoy Web development as well, I learnt serveral languages' basics in order to see what language I would like the most, in order to learn deeper inside about it. I learnt Python, C# and C++ in less than 3 months. I loved none of them. I tried to program some games and UWP applications with C#, while making some Python scripts and struggling to understand C++ (I did not understand at all its syntax and the theory behind it) in order to see if I could enjoy at least one of them. I could not.
Later I discovered Arduino, an SoC (System on Chip) usually ruled by an 8-bit AVR microcontroller, that was intended to be programmed using a simplified syntax of C++ (I did understand this version of the language, since it was intended to be easy). I loved it. I had in my hands all the power. That board would do whatever I told it to do. Nothing more and nothing less.
Arduino made me love embedded systems and SoCs, but I had a question: How does this stuff work? Is there a way to tell the board exactly what to do? The answer for both questions was assembly and low level programming.
After some time of researching, I abandoned Arduino and entered the awesome world of low level programming (assembly and C for x86_64). First, I made some simple MASM executables for Windows. Then, I developed some ELF executables with NASM and C and, after some months of continuous training, I felt ready for a huge challenge: creating a 16-bit text-based OS. I wrote it using NASM, and after some months of continuous development several friends contacted me for using my OS (although the OS was not especially useful, it was performance and efficiency oriented). Unfortunately, a couple of months ago I had to delete the OS code and binaries for several reasons (version control problems and technical debt, since it was my very first OS and my first large project).
Later, I noticed I could use assembly to program Arduino, and it made me happy. I loved the idea of being able to use all the theory learnt on programming the platform that made me love this field. Again, made some research on it, but assembly on microcontrollers is quite more difficult than CPU's, so I downloaded all the documentation I could for the ATMEGA328P in order to read and invest my time on it later (even currently it is quite difficult and long for me). Until that moment comes, I want to learn some C++ and make some programs with it (I am on it currently), since I already understand the theory behind it and it is the most used language in Embedded Systems nowadays. At the same time, I am doing some researching and taking free courses on CPU High Performance architectures.

TL;DR:
I have learnt about many languages, but I do love assembly and C (I am learning C++ nowadays) more than any other. High-level languages ​​and I don't get along very well.