Choosing your first programming language

Certainly this is one of the questions that comes to my inbox the most when it comes to programming. If we are going to start a series of articles that will allow you to learn how to program and give back free knowledge in the form of contributions to free software / open source communities around the world, it is necessary to answer this basic if a bit difficult question. What programming language should I learn?

A Little History

In order to begin to understand and choose a programming language, we must first know a little about their history, their uses and functions, and how they solve different needs over time.

Machine languages ​​(low level)

Commonly known as Assembly, are programming languages ​​that we could define as dialects of a more general language ... This sounds a bit complicated but I am going to exemplify it ... We know that the universal language of computing is electricity, this means that ultimately what a computer reads are 0sy 1yes, let's call this ecomputer english. In this example, Spanish is the basic rule, but as we well know, the Spanish spoken by Latinos is not the same as that spoken in Spain, and even so, the Spanish of Peru is not the same with the Spanish of Argentina. Obviously we all have almost the same words (0sy 1s), but the use and meaning may vary according to context.

This happens at the processor level. When we talk about computing architectures, (amd64, intel, arm, ...) we refer to the dialect of that computer spanish. This is because different companies understand the order and meaning in their own way, so some vary in details such as the flow of the current, or the order in which they are going to be kept. 0sy 1s.

These programming languages ​​are extremely fast, since they work at the lowest possible level of programming, but they are highly dependent on the architecture and are certainly a bit more complicated to learn than the rest. These often require a broader base of concepts in order to transform the data and be able to execute useful things on it. For video game lovers, an example would be SEGA consoles, which used Assembly to program their games. Obviously at that time the amount of memory was minimal compared to today, and it was necessary to master a language that could be fast and produce light programs.

High-level languages

This large group contemplates those languages ​​that came after Assembly. The need to obtain portable code led to the emergence of a group of languages ​​called compiled. Among these, the first to take advantage was C, which has dominated programming at the operating system level since the 70s.

Compiled languages

Let's see a practical example of what I comment. Let's look at a very simple C language program that prints one line of code.

Own. Christopher Diaz Riveros

After compiling it we have the following:

Own design: Christopher Díaz Riveros

But now let's see what we would have to write to replicate the same result in Assembly code:

Own. Christopher Diaz Riveros

This is the translation of our 3 lines of code from simple.c, the file simple.s is created using the command gcc -S simple.c and it is what our processor would understand in a dialect Assembly. Obviously in order to create an executable that consists of 0sy 1s the file needs to be processed simple.s and connect it with the shared libraries of our system. This is done using a assembler (as) or with a Connector (ld).

Compiled languages ​​provide a great advantage over low-level ones, they are portable. Portability delivers code that can be executed on different processors without the need to generate specific code for each architecture. Another obvious advantage is the simplicity it uses when reading and writing code. Among its main disadvantages we have a high complexity, since compared to the next type of languages ​​that we will see, the freedom that C offers can be detrimental if you do not know how to control, it is certainly like delivering a gun, it could happen that in the lack of experience a person ends up shooting his own foot in an attempt to clean the gun.

Interpreted languages

Within this group we have a great variety of languages, among the most important we have Python, Ruby, Javascript, PHP, etc ... The basic idea of ​​these languages ​​is to provide a quick way to create and execute programs, this is because many of the difficult processes are carried out in the interpreter, and the programming of the logic is what is implemented in the code. Let's look at the same previous example but this time written in Python:

Own. Christopher Diaz Riveros

Among the most outstanding things we can see that the first line is in charge of calling the interpreter (the program that will execute our application) and the subsequent code is more "simple" than its version in C, since all the heavy work is performed on the interpreter.

Own. Christopher Diaz Riveros

Interpreted languages ​​provide the developer with a greater layer of security, since they have more rigorous security controls (BEWARE that they are not perfect, since even the best can make mistakes) and we no longer suffer the risk of firing a weapon without realizing it, since on the first try, the interpreter would raise an alert and the execution would be canceled. The main disadvantage becomes evident when executing the program, since it is slower than its binary counterpart, this precisely due to the greater amount of processing to be able to ensure that the code works. If the program does not require extremely short deadlines, the difference may go unnoticed, but if we are talking about thousands or millions of data per second, the difference becomes exponentially noticeable in compiled languages.

Typing

This is a characteristic of programming languages, these can be strongly weakly typed. I'm going to leave this topic for another post, since it is necessary and curious to understand how memory is stored in a program, but for now we only need to make the distinction: Strongly typed languages ​​are those that require knowing the type of data that is going to be worked on a variable or constant, while the weakly types can perform conversions so implicit and everything will depend on a conversion hierarchy followed by the language. (if it is not understood now, no problem, we will leave it for later)

Paradigms

Like everything in the GNU / Linux world, programming languages ​​are based according to paradigms, and communities are generated around them. For example we have the Python Foundation o Ruby o PHP o Bash (in which case it is the GNU community). What I want to get to with this is that I cannot express the large number of pros and cons that each one has, but I can tell you that where there is a free programming language, there is a community to learn and participate in. It is worth mentioning that many if not all language interpreters are written in C, or some close derivative, and their development is usually carried out by a smaller group of the community, who are in charge of taking decisions that will affect all language users. Institutions can even be formed to ensure the correct development of language, as is the case with C.

Which to choose?

We have already talked enough about languages ​​and I still do not answer the most important thing 😛. But I hope that after having reviewed this small article it is not necessary for me to tell you which language to choose, since with this information you are fully capable of looking for one that generates curiosity. Obviously if you want to learn to program in a language Assembly it will take a long time before you can have something functional, the time will be greatly reduced if you opt for a compiled language, where in addition to having portability in * NIX systems, you will be able to learn information regarding the operation of the same system, since being in contact with C or derivatives makes you in one way or another learn how an operating system works in a general way. Finally, if you want to learn something light and that allows you to do a lot without the need to understand a lot, interpreted languages ​​are a fun way to learn and develop programming skills.

Learn with something exciting

This is the best advice I can give you, if you want to learn something, you need to find something exciting first, otherwise it will be quite difficult to overcome the typical learning curve of all programming languages. Suppose you manage systems, in that case you may need to learn an ideal language to scripting (interpreted), within these we have Perl, Python, Bash, etc etc ... Maybe yours are games, there are many projects in languages ​​such as Javascript, Lua, C ++, depending on the type of game you want to play. Perhaps you would like to create a tool at the system level, since we have C, Python, Perl, as you will see some are repeated, and this is because many languages ​​can be used for many tasks, that is why the definition of multipurpose languages in most of these.

Start a project

By this I do not mean that you create the following compiler, or even the following programming language, a project can be to fix a small bug in your favorite program, maybe even help improve the documentation. Why the documentation? because there is no better way to learn how the software works than by reading and helping to write its documentation, because after the source code, it is the greatest source of information that you will find about the program. In another moment we will see how to read the code of a project and understand the functions and values ​​they acquire.

Thank you very much for getting here and as always, your comments help me generate better content and know where to focus, Greetings.


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.

  1.   Anonymous said

    As always a 10 !!!!!! Thanks for your articles. Greetings and more to come !!!!

    1.    ChrisADR said

      Thank you very much 🙂 encourages me to keep writing. Cheers

  2.   Ruben said

    I think it is a mistake to ask the question "which language to choose?" I am one of those who think that language is the least of it, the important thing is to learn the basics of programming and to "think computationally." Decide on a syntax, its typing, if it supports OOP, its utility, etc. I think it is something that will come naturally in the studio and after all, every programmer knows more than 1, 2 and 3 languages ​​... and thanks to the programming concepts (and not syntax) that he has, he is able to program in a language you have not yet experience in.
    However, for the initiated, I think that a good language can be Python for its simplicity, but above all, go a little further, study algorithms and know how things work "inside".

    Greetings ChrisADR

    1.    ChrisADR said

      Hi Rubén, thanks for sharing
      There is something that I have learned over time in the world of programming, and that is that "he who covers a lot does not squeeze" and by this well-known phrase I mean that many times, and especially the most enthusiastic, decide to try all a bit, and have very quick turns in terms of learning to code. I believe, and it is my personal opinion, that a good developer should know and master a compiler language and an interpreter language, in addition to having a notion of some Assembly dialect.
      The reason is the following, the prototyping must always be something simple and fast, easy to generate and that generally shows a result, but if it is not enough, there must be a "plan B" to resort to when the interpreter has arrived to its limit.
      Knowing a dialect of Assembly not only gives you confidence but also teaches you to think "computationally", but obviously this part is the most complicated of all, and it is certainly something that not all programmers come to.
      But back to the topic, because the main idea I think is, "choose a language and practice a LOT", because really the only way to get good at programming is by reading and writing code, and this is something that I have learned from the kernel community When you keep the same syntax for a long time, you stop seeing the form and start worrying about the BACKGROUND. The idea of ​​choosing a language or syntax from the beginning is that one is able to accustom its reading and writing in such a way that one can begin to read the MEANING of the program instead of the syntax of the program.
      This is the main reason for this post, that each one chooses their language so that in the following we can explain the concepts, perhaps with this the doubts are clarified 🙂
      Greetings and thanks for sharing.

  3.   Deibis Contreras said

    thanks for the post it was good.

    regards

    1.    ChrisADR said

      Hello Deibis, thank you for sharing 🙂 Greetings

  4.   JorgeFS said

    My advice: anything other than PHP. 20 years ago PHP made a certain sense in its existence due to the high level of complexity that was programming the Web in another language using CGI. But today there is a great variety of Frameworks to make Web development much more enjoyable in powerful languages, such as Django for Python, Spring for Java or Rails for Ruby. Although PHP currently appears on all language popularity charts, in my opinion PHP will lose its relevance over time.
    I strongly advise starting with C \ C ++ to understand the reality of programming, although the learning curve is steep.
    Greetings.

    1.    ChrisADR said

      Hi Jorge, thanks for sharing, just remembering Laravel, which is a pretty solid Framework mí I personally never liked Spring or Java for web development, I find it quite cumbersome, but I guess it is part of the amount of time they have been in the market, at the time they were pioneers and certainly today modern alternatives (Js, Python and Ruby) have been able to improve the way of presenting code that is readable and modifiable without much work.
      I am also inclined to people learning C / C ++ at some point in their lives, I started with Java, but I suppose that is the beauty of programming, you can start with whatever you want, as long as you are consistent it will be helpful 🙂 Cheers

    2.    Ruben said

      I can not disagree with you any more. I started many years ago with C and VB, to later focus on PHP and JS (since I focused on web development) and later while studying I learned C / C ++ and Java mainly.
      PHP has a number of advantages that I could not list in this message. PHP7 is fast (faster than Python ... without using hhvm, different caches, frameworks like Phalcon or bytecode in the case of Python), it has a huge number of libraries and frameworks, it has a huge amount of directly implemented functions to use them at any time, its syntax so similar to C makes it very easy to migrate to other languages.
      30% of the websites worldwide are made with WordPress (PHP) and that seems not to change, Wikipedia uses it, Facebook (with hhvm) and a large number of sites, in total, 80%.

      I remind you that Ruby on Rails like Django are 12 years old! What quota have they achieved in this time? And of course, we are talking about 2 frameworks that practically have a monopoly and there is no type of fragmentation. What other serious alternatives do I have? Saying that PHP is going to lose relevance makes very little sense.

      Now that Python is in fashion because it has a fast learning curve, it is a simple language and they sell it to you as the «become a programmer in 20 hours with Python and work on it», with the support of companies like Google and that now there is the The fashion of looking for new languages ​​(Go, Dart….) to differentiate yourself in a CV (or as the daily birth of 50 frameworks for Javascript!), does not mean that things change.

      Ruby is a very interesting language, but it breaks so much with established patterns that I find it difficult to believe that it became more popular than PHP. Of course, Ruby I think is the worst language to start programming of all.
      I understand that you tell me that Python can be fun to program, even Ruby with its infinity of peculiarities ... but Spring with Java? Really? Java can be many things ... but more enjoyable than Python and PHP?

      It is all very well to start with Python, but since you only stick with Python, you run the risk that many companies will believe that your level of programming is not "deep" (even if you are very good at Python). This is because you compete with other "multipurpose" languages ​​like C ++ or Java. You can program in Python without knowing the difference what the hell a pointer is, bitwise operations, how a garbage collector works and a long etcetera.
      Python is perhaps the least similar to "classical programming" that exists and can be seen as a "children's language" (get the metaphor), and that in turn is an advantage and a disadvantage.

      1.    JorgeFS said

        "Python is perhaps the least similar to 'classical programming' that exists and can be seen as a 'language for children' (understand the metaphor), and that in turn is an advantage and a disadvantage." LOL, this is one of the funniest things I saw said about Python. Have you ever really learned Python?
        How long has it been around the world outside of PHP?
        Friend PHP was stillborn. PHP (\ d +) has a lot of drag with it due to a very bad initial design and in order to maintain the user community it keeps dragging all those initial design errors very thoroughly. PHP was born without modularity, with a lot of C-style functionalities (which by the way, I don't know where you got it from since its syntax is similar to C it can easily be ported to other languages). A high-level language, as PHP should behave, has such ugly things as this trail of functions listed on its official site http://php.net/manual/en/indexes.functions.phpThis is because it was born without modularity, therefore everything is filthy mixed up and without namespaces.
        This is a piece of PHP code:
        "Stream_notification_callback");
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        at some point can it be determined from where all these 'stream' functionalities were imported? NO, you could say then that they are buildin functions, but then the whole ecosystem is buildin functions ?. And so, there is a lot of garbage in the PHP code, that if you are not able to understand the complexity and uselessness of such bad design, forgive me but it still has a lot of world to see.
        Wordpress is an excellent software solution, but this does not mean that it has a good technological base. You can hammer with a stone and drive nails out with your teeth, and you can still do excellent carpentry work, but of course, with a lot more work than another carpenter who uses a good hammer.

        On the other hand: "become a programmer in 20 hours with Python and work at it", I have never seen such stupidity. You may build a website in PHP in 20 hours and without having any knowledge of how Web programming works, or the programming itself. In fact this is why PHP is so popular, because newbies upon entering this world see PHP as a point of rapid development (which is why so much PHP code sucks so hard).
        Regarding Python's shortcomings, the only one in which it was successful was in working with pointers, but in any case, Python is a high-level language (as is Java) and it does not use them at the syntax level; but bitwise operations, serious ?, you mean this x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. I seriously understood the garbage collector much less: https://docs.python.org/3/library/gc.html.
        PHP gaps:
        -PHP has a very poor object-oriented programming (OOP) design.
        -You cannot overload operators yet.
        -Surprise, function overloading in PHP it is not what you naturally expect from this concept.
        … .. and I just got bored hehe.
        Greetings.

        1.    Ruben said

          I put in parentheses "understand the metaphor" (by comparing Python with C ++ / Java in the same work environment), it is clear that you did not understand it. I could tell you that a C ++ programmer can learn Python in a much faster way than a Python programmer can learn C ++, just as it is no surprise that the average salary of a C / C ++ programmer is higher than a Python one.
          I could explain it to you with other examples, even with a drawing! but it seems that you only focus on decontextualizing and ridiculing what I put.

          At no time have I said that PHP is the best language in the world or that it has an exemplary design, I don't know where you get that from. I think that before judging the knowledge of others you should improve your reading comprehension. What is true (and I said in my message) is that developing with it is very agile, in addition to the entire ecosystem of frameworks, libraries and utilities that you can find.
          Also, what kind of comparison do we make? Python as a multipurpose language or for the web? In that case, why do we compare it to PHP? PHP has a specific field, and it is in that field where Python (with a 0.2% share, which has not changed this year) pales next to PHP.
          Now let's see the PHP trends; from 82,4% in January 2017 to 83.1% in January 2018: https://w3techs.com/technologies/history_overview/programming_language

          Is Python going to dethrone PHP? In what year? in what five years? decade?
          Python can be used in many other tasks, and even become more widely used than PHP, but Python as a web development language is light years away from being even relevant, 0.2% stalling against 83.1% (with a rise this year).

          You also take things for granted by saying that I don't go around outside of PHP, hinting that I only know PHP, when precisely I haven't programmed in PHP for a long time haha. Currently, for work reasons, I mostly program in Java.
          Nor have I said that by programming in Python you don't have knowledge about bitwise, a garbage collector or a pointer. Rather, you can program in Python without even knowing what this is. However, I highly doubt that would be the case for a C ++ programmer. And obviously I do the comparison when Python enters that field of "multipurpose language", not for web programming.

          Become a programmer in 20 hours is simply a joke, an exaggeration. However, I could put here various links about online education platforms and courses that promise similar things. Don't blame me, blame a job market that thinks that becoming an "expert programmer" is a matter of taking a 20-hour course. And being Python one of the fashionable languages ​​and also, with the fastest learning curve ... white and in a bottle.

          I insist, you base your message on saying how bad PHP is (which in a certain part, I agree). It seems correct to me, except that my message is not about that, but why PHP is going to continue to be used and it will not disappear tomorrow as you think.

          All the best

  5.   nobody said

    C -> Go -> (Lisp | Haskell | Java | whatever)

    1.    ChrisADR said

      Recently a reader sent me to my email a recommendation of a Go book, certainly a language to take into account in the future and of which perhaps there will be a post here 🙂 Many graphics to share

  6.   mvr1981 said

    Well ... and what do I program? Why learn a programming language today with such good and experienced programmers that already exist? What problems can I solve that others have not already solved in a much more efficient way?… In short: How original is being a programmer today? How can I collaborate with others without being kicked or excluded by my lack of knowledge and experience?

    1.    ChrisADR said

      Hello mvr1981, really interesting questions 🙂 we are going to reel them from the last one to the first.

      How can I collaborate with others without being kicked or excluded by my lack of knowledge and experience?

      If you don't want to get kicked, the first step is to learn the process, you can't imagine the number of people who come to projects wanting to do things exclusively their way, wanting the community to adapt to their wishes. It's certainly like me coming to your house and making a mess and disrespecting your family (that's how it feels many times). If you want to prevent this from happening, pay close attention to the guidelines to contribute, the means by which to do it, and do not send something incomplete, if you need help there are always means to communicate, but a poorly done job will probably create bad first impressions. If you don't want to exclude yourself that's up to you, you can see him as the useless programmer who doesn't know what he's doing or the one on his way to becoming an excellent programmer, and that only happens with practice and certainly with bugs along the way. I've been wrong many times before I got my developer status on Gentoo, and that didn't stop me from trying despite the "bad time" 🙂.

      How original is it to be a programmer today?

      -It's not about originality, it is a necessity today, just think about the following, 20 or 30 years ago, typing was a necessity, many jobs inferred that you knew or at least could do it. Today knowing Office is a necessity, there is practically no job that does not put you in front of Office documents. Tomorrow, very soon, programming will be a necessity. And this also applies from a personal point of view, knowing what happens in the programs to which you entrust things as important as your money, health, family, is something logical for me, because you can only know their limitations if you know how they work and for to know it, you need to know how to program.

      What problems can I solve that others have not already solved in a much more efficient way?

      -You would be surprised by the amount of Features that are required today, and to tell the truth, it does not matter that there are the best programmers in the world in the community, the work will always be greater than the work capacity of the developers, I can verify this in Gentoo, there are people who develop the kernel, people working for Google, Sony, etc etc ... the only thing we all have in common is that no one has as much time as they would like to be able to do all the pending work.

      Why learn a programming language today with such good and experienced programmers that already exist?

      -This is answered in the second question 😉 But now I can add that generations must be able to support the work that has already been developed, by this I mean that those "experienced" developers will gradually disappear and it will be necessary for the "younger »Developers take responsibility and help keep the cycle alive, a community that does not have young and inexperienced people is prone to disappear over time, precisely because there will be no opportunity to transmit knowledge.

      And what do I program?

      -This is perhaps the most difficult thing to answer, but I'll try to give you an example poco I recently started to suffer from problems with GNOME 24 and its connection to Wayland that prevent programs like Shutter from taking screenshots. This is a problem for me because when I write my articles, I need to show you what I say 🙂 looking around a bit I came to the GNOME Screenshot application, somewhat "minimalist" to say the least. Among its functions, there is one of taking a screen region, but what happens if I did not take the photo well? Well, I have to leave and re-enter the program, something tedious certainly, a button that says "Retake" or something like that allows me to take a new capture without having to exit and enter again would help me. it is a small programming project, I have never programmed anything in the GNOME framework so obviously I have a lot to learn before sending my "patch" with the new button, but along the way I learn to program and hopefully this feature it will be of help to more than one when it is available to all.

      This is an example, it is something simple and that surely any other "expert" programmer could have done it already, but due to evident lack of time, it has not been like that, now I am the one who has the possibility of doing it, without actually being a super programmer.

      Now it's only up to you to find something that would make your life "simpler" in that software you use so often, the beauty of that is that if we follow the advice I'm going to give you in the following articles, the language won't matter, because You will know the basics to begin to understand the code you read and modify it to do what you want, that is a very special feeling 🙂

      Greetings and thanks again

      1.    nobody said

        I think that only once I have opened the gnome captures program, the easiest thing is to go to the keyboard shortcuts and assign three combinations print to capture all alt-print to capture the active window and super-print to make a selection from the capture region, the available shortcuts are already available, it is simply a matter of assigning them

        1.    ChrisADR said

          That is why we give you an example 🙂 because small things like that button are programming, they can help some as they can go unnoticed by others, but they certainly meet the main objective, help learn to program, and give way to new features, After that button many things can be started, such as a session management, or a preview screen of all the photos taken, or in short, a lot of things that could be done. The idea is that you find something that makes you jump your curiosity, any software that runs on your system may need improvements or new features that due to lack of time or personnel have not been implemented yet 🙂

      2.    mvr1981 said

        Thanks to you. are very good answers.

    2.    Bill said

      Well, for someone who is not going to be a professional in the field, it would be necessary to see in what environment they work, both for administrative tasks and directives it can be interesting to know, for example, Python / Basic and know how to program macros in office packages such as LibreOffice or MS Office. There are times when this can save many hours of work for you or other workers who surround you and ask them to perform any repetitive task, you can create a dashboard to quickly calculate the main ratios of the company after connecting with the database of it and perform some SQL query.
      Like everything, if you know the tools at your fingertips you can think about how to get the most out of it. Not everything is made up.

  7.   Marcelo said

    Guillermo, totally agree with you, "Not everything is invented" and what is invented is modifiable. You have to get the most out of the tools and use the one that best suits your needs.

  8.   Ricardo said

    For programming, the first language to learn is English, then the one that appeals to them the most and seems most beautiful to them.

    1.    ChrisADR said

      I had not written it, but true 🙂 knowing English helps a lot since most languages ​​are written in it, but also because the greater amount of first-hand information also también Thank you very much for sharing

  9.   Ruben salgado said

    Excellent article, in addition to motivating.

    1.    ChrisADR said

      Very kind, thank you very much 🙂 Greetings

  10.   Gonzalo Martinez said

    Programming is knowing how to reason and translate that reasoning into instructions.

    Two clarifications about the article:

    1) Based on my experience as a programming teacher for almost 10 years, it does not matter what language you learn with, but how you learn and how complex it is.

    I think that a language that can be learned in a structured way, and then move on to other more complex things, is easier than starting with a language like Java from the beginning.

    It is easier to learn something like a Hello World in C or Pascal as a base, than with a few lines (PROGRAM in the case of Pascal, or #include In the case of C) you can start to develop the algorithm and code the program with its logic directly, as in Java, which in itself needs a class, a method, and some other things that for a beginner is an information overload unnecessary, and that may well be ignored and move on to other things, but they are concepts that are there, and in my opinion, overlooking things is not a good way to learn, especially if the language forces you to use them. It's like starting target practice for the first time with an M-16, and shooting for months in semi-automatic mode holding the handle with both hands like a pistol.

    2) Whether a language is interpreted or compiled depends on its implementation, not on the language itself. For example, if you use Python, for a web app that uses wsgi (be it mod_wsgi in apache, or uwsgi for Nginx), the python code is compiled when starting the corresponding module, generating .pyc files

    There are also binary file generators for java (which generate native binaries instead of bytecode), or compilers of php scripts in pure binaries.

    Regarding what they say about PHP, it is simply a language designed in another era, with other things in mind, and without considering aspects that did not exist at the time. Clearly, the fact that it is the most used does not make it the best for anything in the world, but there is a reality: it is the language with which there is the greatest chance of getting a job in all programming. Knowing it doesn't hurt, even if you don't like it.

    Even I who have been working as a System Administrator for several years and left the job of developer, every so often I have to put PHP code into something.

    1.    ChrisADR said

      Hi Gonzalo, thanks for sharing,

      Certainly speaking of unnecessary information overloads, knowing that the same language can be interpreted or compiled is something that is not necessary at this stage 🙂 Certainly the implementation is important, but if we say that at this level, we do not generate more than confusion. In the same way, object-oriented programming issues are not addressed, or other concepts that must be dosed gradually so as not to make people dizzy.

      Since space is limited, the main objective of the post is to show readers who want to program that there are two great worlds of languages, that the "traditionally" interpreted are more "simple", that the "traditionally" compiled are a bit more "complex" but it is worth that level of complexity to have a more solid understanding and that it is up to each person to choose the language, since depending on the programming approach, they will be able to choose their favorite projects and at the same time they will be able to understand what they read and / or write 🙂

      Thank you very much again, greetings.

      1.    Gonzalo Martinez said

        This is an error, there are no compiled or interpreted languages, there are interpreters and compilers for each language, both for different cases.

        It is not an information overload to mention it now, it is a mistake to make such a statement. In my opinion, it would have been more productive to ignore the interpreters if you did not want to overload with information.

        1.    ChrisADR said

          Thanks for the clarification, I will take it into consideration when I return to the subject. Cheers

  11.   Ares said

    What language do you recommend for the server side taking into account that PHP fell out of favor?
    The same for databases, I don't know if there will be something better and more modern than mySQL.

    1.    ChrisADR said

      PHP has not fallen out of favor ... Every language has its life cycle, and php is certainly already a language that enters the scale of "mature", which makes it useful at the business level, where stability is above all ... Like some banks where it is still developed in java, which is more "mature" than php and certainly has its followers and detractors ... And not to mention COBOL ...

      If what you are looking for is uniformity and modernity, javascript is becoming one of the favorites of the so-called “full stack developers”, although the ruby ​​paradigm or the “simplicity” of python are good references too…. Even perl could be the option depending on the needs 🙂

      Nowadays the ORM (object relational mappers) is taking a lot of force regarding the handling of relational data. It goes from SQL syntax to class and attribute handling ... Almost all languages ​​(if not all) handle some ORM.

      . Mongo DB is an alternative to relational databases that has become quite important, however, it is necessary to know its pros and cons and validate if it would be the best solution depending on the specific need.

      I hope it helps you, greetings 🙂

      1.    Ares said

        Thanks, I'll check that.

      2.    Ares said

        I forgot.

        What do you recommend me to work with JAVA in Linux ?.
        If you can differentiate between free and closed better.

        1.    ChrisADR said

          Eclipse and NetBeans are open source, I'm not sure if there is any that is purely free software, I have a habit of using vim because sometimes the amount of code makes using an entire IDE slow and prone to execution errors. Greetings 🙂

        2.    paulzeta said

          To work with java in Linux I use IntelliJ I recommend you.

          1.    ChrisADR said

            PS, IntelliJ is proprietary software 🙂

  12.   je said

    Guys also remember that ... I work in a bank and I tell you that programming languages ​​take a back seat to let SQL and Stored procedures go first.

    1.    Gonzalo Martinez said

      You have to take them into account the stored procedures, but by not using a portable language between engines, at least in my experience, it is always about avoiding them unless there is no other option.