Escolhendo sua primeira linguagem de programação

Certamente esta é uma das perguntas que mais me vem à cabeça quando se trata de programação. Se vamos começar uma série de artigos que lhe permitirão aprender a programar e devolver conhecimento livre na forma de contribuições para software livre / comunidades de código aberto ao redor do mundo, é necessário responder a este básico, embora um pouco difícil questão. Que linguagem de programação devo aprender?

Um pouco de história

Para começar a entender e escolher uma linguagem de programação, devemos primeiro saber um pouco sobre sua história, seus usos e funções, e como eles resolvem diferentes necessidades ao longo do tempo.

Linguagens de máquina (baixo nível)

Normalmente conhecido como MontagemSão linguagens de programação que poderíamos definir como dialetos de uma linguagem mais geral ... Isso parece um pouco complicado, mas vou exemplificar ... Sabemos que a linguagem universal da computação é eletricidade, isso significa que, em última análise, o que um computador lê são 0sy 1sim vamos chamar isso einglês do computador. Neste exemplo, o espanhol é a regra básica, mas como sabemos, o espanhol falado pelos latinos não é igual ao espanhol falado na Espanha e, mesmo assim, o espanhol do Peru não é igual ao espanhol da Argentina. Obviamente, todos nós temos quase as mesmas palavras (0sy 1s), mas o uso e o significado podem variar de acordo com o contexto.

Isso acontece no nível do processador. Quando falamos sobre arquiteturas de computação, (amd64, intel, arm, ...) nos referimos ao dialeto de que espanhol de computador. Isso ocorre porque diferentes empresas entendem a ordem e o significado de sua própria maneira, portanto, algumas variam em detalhes, como o fluxo da corrente ou a ordem em que serão mantidos. 0sy 1s.

Essas linguagens de programação são extremamente rápidas, pois funcionam no nível de programação mais baixo possível, mas são altamente dependentes da arquitetura e certamente são um pouco mais complicadas de aprender do que as outras. Freqüentemente, isso exige uma base de conceitos mais ampla para transformar os dados e ser capaz de executar coisas úteis sobre eles. Para os amantes de videogame, um exemplo seriam os consoles SEGA, que usavam a Assembly para programar seus jogos. Obviamente, naquela época a quantidade de memória era mínima se comparada a hoje, e era necessário dominar uma linguagem que pudesse ser rápida e produzir programas leves.

Linguagens de alto nível

Este grande grupo contempla as línguas que vieram depois Montagem. A necessidade de obter código portátil levou ao surgimento de um grupo de linguagens chamadas compilado. Entre eles, o primeiro a tirar vantagem foi o C, que dominou a programação no nível do sistema operacional desde os anos 70.

Linguagens compiladas

Vamos ver um exemplo prático do que comento. Vejamos um programa de linguagem C muito simples que imprime uma linha de código.

Próprio. Christopher Diaz Riveros

Depois de compilá-lo, temos o seguinte:

Projeto próprio: Christopher Díaz Riveros

Mas agora vamos ver o que teríamos que escrever para replicar o mesmo resultado no código Assembly:

Próprio. Christopher Diaz Riveros

Esta é a tradução de nossas 3 linhas de código de simple.c, o arquivo simple.s é criado usando o comando gcc -S simple.c e é o que nosso processador entenderia em um dialeto Montagem. Obviamente, para criar um executável que consiste em 0sy 1o arquivo precisa ser processado simple.s e conecte-o às bibliotecas compartilhadas de nosso sistema. Isso é feito usando um montador (as) e um conector (ld).

Linguagens compiladas fornecem uma grande vantagem sobre as de baixo nível, elas são portáteis. A portabilidade entrega código que pode ser executado em diferentes processadores sem a necessidade de gerar código específico para cada arquitetura. Outra vantagem óbvia é a simplicidade que usa ao ler e escrever código. Entre suas principais desvantagens temos uma alta complexidade, pois em comparação com os seguintes tipos de linguagens que veremos, a liberdade que C oferece pode ser prejudicial se você não souber controlar, é certamente como entregar uma arma, pode acontecer que na falta de experiência uma pessoa acaba atirando no próprio pé na tentativa de limpar a arma.

Linguagens interpretadas

Dentro deste grupo temos uma grande variedade de linguagens, entre as mais importantes temos Python, Ruby, Javascript, PHP, etc ... A ideia básica dessas linguagens é fornecer uma maneira rápida de criar e executar programas, isso porque muitos dos processos difíceis são realizados no interpretador, e a programação da lógica é o que é implementado no código. Vejamos o mesmo exemplo acima, mas desta vez escrito em Python:

Próprio. Christopher Diaz Riveros

Entre as coisas mais destacadas podemos ver que a primeira linha se encarrega de chamar o intérprete (o programa que executará nossa aplicação) e o código subsequente é mais "simples" que sua versão em C, pois todo o trabalho pesado é realizado no intérprete.

Próprio. Christopher Diaz Riveros

As linguagens interpretadas fornecem ao desenvolvedor uma maior camada de segurança, pois possuem controles de segurança mais rigorosos (CUIDADO que não são perfeitos, pois até os melhores podem cometer erros) e não corremos mais o risco de disparar uma arma sem perceber isso, pois na primeira tentativa, o intérprete levantaria um alerta e a execução seria cancelada. A principal desvantagem fica evidente na execução do programa, por ser mais lento que sua contraparte binária, isso justamente pela maior quantidade de processamento para poder garantir que o código funcione. Se o programa não exige prazos extremamente curtos, a diferença pode passar despercebida, mas se estamos falando de milhares ou milhões de dados por segundo, a diferença torna-se exponencialmente perceptível nas linguagens compiladas.

Digitando

Esta é uma característica das linguagens de programação, podem ser fortemente fracamente digitado. Vou deixar esse tópico para outro post, visto que é necessário e curioso entender como a memória é armazenada em um programa, mas por enquanto só precisamos fazer a distinção: Linguagens fortemente tipadas são aquelas que requerem o conhecimento do tipo de dado que será trabalhado em uma variável ou constante, enquanto o fracamente tipos podem realizar conversões em um implícito e tudo vai depender de uma hierarquia de conversão seguida pela linguagem. (se não for entendido agora, não tem problema, vamos deixar para depois)

paradigmas

Como tudo no mundo GNU / Linux, as linguagens de programação são baseadas em paradigmas e comunidades são geradas em torno deles. Por exemplo, temos o Fundação Python o Ruby o PHP o Bash (nesse caso, é a comunidade GNU). O que eu quero chegar com isso é que não posso expressar o grande número de prós e contras que cada um tem, mas posso dizer que onde há uma linguagem de programação livre, há uma comunidade para aprender e participar. Vale ressaltar que muitos, senão todos os intérpretes de linguagem são escritos em C, ou algum derivado próximo, e seu desenvolvimento é geralmente realizado por um grupo menor da comunidade, que é responsável por tomar decisões que afetarão todos os usuários da linguagem. Instituições podem até ser formadas para garantir o correto desenvolvimento da linguagem, como é o caso de C.

Qual deles escolher?

Já conversamos bastante sobre idiomas e ainda não respondo o mais importante 😛. Mas espero que depois de revisar este pequeno artigo não seja necessário dizer qual idioma escolher, já que com essas informações você é plenamente capaz de procurar um que gere curiosidade. Obviamente, se você quiser aprender a programar em uma linguagem Montagem vai demorar muito até que você possa ter algo funcional, o tempo será muito reduzido se você optar por uma linguagem compilada, onde além de ter portabilidade em sistemas * NIX, você poderá aprender informações sobre o funcionamento do mesmo sistema, já que estar em contato com C ou derivados faz você de uma forma ou de outra aprender como um sistema operacional funciona de uma maneira geral. Finalmente, se você quer aprender algo leve e que permite fazer muito sem a necessidade de entender muito, as linguagens interpretadas são uma forma divertida de aprender e desenvolver habilidades de programação.

Aprenda com algo emocionante

Este é o melhor conselho que posso lhe dar, se você quer aprender algo, você precisa encontrar algo interessante primeiro, caso contrário, será muito difícil superar a curva de aprendizado típica de qualquer linguagem de programação. Suponha que você gerencie sistemas, nesse caso, pode ser necessário aprender uma linguagem ideal para script (interpretado), dentro destes temos Perl, Python, Bash, etc etc ... Talvez os seus sejam jogos, existem muitos projetos em linguagens como Javascript, Lua, C ++, dependendo do tipo de jogo que você deseja Toque. Talvez você queira criar uma ferramenta em nível de sistema, já que temos C, Python, Perl, como você verá alguns se repetem, e isso porque muitas linguagens podem ser usadas para muitas tarefas, por isso a definição do linguagens polivalentes na maioria deles.

Comece um projeto

Com isso não quero dizer que você crie o seguinte compilador, ou mesmo a seguinte linguagem de programação, um projeto pode ser para consertar um pequeno bug em seu programa favorito, talvez até ajudar a melhorar a documentação. Por que a documentação? porque não há melhor maneira de aprender como funciona o software do que lendo e ajudando a escrever sua documentação, pois depois do código fonte, é a maior fonte de informação que você encontrará sobre o programa. Em outro momento veremos como ler o código de um projeto e entender as funções e valores que eles adquirem.

Muito obrigado por vir aqui e como sempre, seus comentários me ajudam a gerar melhores conteúdos e saber onde focar, Saudações.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   anônimo dito

    Como sempre um 10 !!!!!! Obrigado por seus artigos. Saudações e muito mais por vir !!!!

    1.    Chris ADR dito

      Muito obrigado 🙂 me incentiva a continuar escrevendo. Felicidades

  2.   Ruben dito

    Acho que é um erro perguntar "qual idioma escolher?" Sou daqueles que pensam que a linguagem é o mínimo, o importante é aprender o básico de programação e "pensar computacionalmente". Decida sobre uma sintaxe, sua tipagem, se ela suporta OOP, sua utilidade, etc. Acho que é algo que virá naturalmente no estudo e afinal, todo programador conhece mais de 1, 2 e 3 linguagens ... e graças aos conceitos de programação (e não sintaxe) que ele tem, ele é capaz para programar em um idioma no qual ele ainda não tem experiência.
    Porém, para os iniciados, acho que uma boa linguagem pode ser Python pela sua simplicidade, mas acima de tudo, vá um pouco mais além, estude algoritmos e saiba como as coisas funcionam "por dentro".

    Saudações ChrisADR

    1.    Chris ADR dito

      Oi Rubén, obrigado por compartilhar
      Há algo que aprendi ao longo do tempo no mundo da programação, que "quem cobre muito não espreme" e com esta frase conhecida quero dizer que muitas vezes, e principalmente os mais entusiastas, decidem tente tudo um pouco e tenha uma rápida evolução em termos de como você aprende a codificar. Acredito, e é opinião pessoal, que um bom desenvolvedor deve conhecer e dominar uma linguagem de compilador e uma linguagem de intérprete, além de ter noção de algum dialeto Assembly.
      A razão é a seguinte, a prototipagem deve ser sempre algo simples e rápido, fácil de gerar e que geralmente dê um resultado, mas se não for suficiente, deve haver um "plano B" a que recorrer quando o intérprete chegar. seu limite.
      Conhecer um dialeto de Assembly não só lhe dá confiança, mas também o ensina a pensar "computacionalmente", mas obviamente essa parte é a mais complicada de todas, e é certamente algo que nem todos os programadores chegam.
      Mas voltando ao assunto, porque a ideia principal, eu acho, é "escolher uma linguagem e praticar MUITO", porque realmente a única maneira de ficar bom em programação é lendo e escrevendo código, e isso é algo que aprendi com a comunidade do kernel Quando você mantém a mesma sintaxe por um longo tempo, você para de ver o formulário e começa a se preocupar com o FUNDO. A ideia de escolher uma linguagem ou sintaxe desde o início é que se possa habituar a sua leitura e escrita de tal forma que se possa começar a ler o SIGNIFICADO do programa em vez da sintaxe do programa.
      Este é o principal motivo deste post, que cada um escolhe sua linguagem para que a seguir possamos explicar os conceitos, talvez com isso as dúvidas sejam esclarecidas 🙂
      Saudações e obrigado por compartilhar.

  3.   deibis contraras dito

    obrigado pelo post foi bom.

    lembranças

    1.    Chris ADR dito

      Olá Deibis, obrigado por compartilhar 🙂 Saudações

  4.   Jorge FS dito

    Meu conselho: qualquer coisa diferente de PHP. Há 20 anos o PHP fazia sentido em sua existência devido ao alto nível de complexidade que era programar a Web em outra linguagem usando CGI. Mas hoje existe uma grande variedade de Frameworks para tornar o desenvolvimento da Web muito mais agradável em linguagens poderosas, como Django para Python, Spring para Java ou Rails para Ruby. Embora o PHP atualmente apareça em todos os gráficos de popularidade de linguagem, na minha opinião o PHP perderá sua relevância com o tempo.
    Aconselho fortemente começar com C \ C ++ para entender a realidade da programação, embora a curva de aprendizado seja íngreme.
    Saudações.

    1.    Chris ADR dito

      Olá Jorge, obrigado por compartilhar, só lembrando do Laravel, que é um Framework bastante sólido 🙂 Eu pessoalmente nunca gostei de Spring ou Java para desenvolvimento web, acho bastante complicado, mas suponho que seja parte do tempo que eles estão No mercado, na época eram pioneiros e certamente hoje alternativas modernas (Js, Python e Ruby) têm conseguido aprimorar a forma de apresentar código legível e modificável sem muito trabalho.
      Também estou inclinado a que as pessoas aprendam C / C ++ em algum momento de suas vidas, comecei com Java, mas acho que essa é a beleza da programação, você pode começar com o que quiser, contanto que seja consistente, seja útil 🙂 Saúde

    2.    Ruben dito

      Eu não posso mais discordar de você. Comecei há muitos anos com C e VB, para depois focar em PHP e JS (já que me concentrei em desenvolvimento web) e depois enquanto estudava aprendi C / C ++ e Java principalmente.
      O PHP tem uma série de vantagens que não consegui listar nesta mensagem. PHP7 é rápido (mais rápido que Python ... sem usar hhvm, caches diferentes, frameworks como Phalcon ou bytecode no caso do Python), tem um grande número de bibliotecas e frameworks, tem um grande número de funções implementadas diretamente para usar a qualquer momento, sua sintaxe tão semelhante a C torna muito fácil migrar para outras linguagens.
      30% dos sites mundiais são feitos com WordPress (PHP) e isso parece não mudar, a Wikipedia usa, Facebook (com hhvm) e um grande número de sites, no total, 80%.

      Lembro a vocês que Ruby on Rails como Django têm 12 anos! Que cota eles alcançaram neste tempo? E claro, estamos falando de 2 frameworks que praticamente têm monopólio e não existe nenhum tipo de fragmentação. Que outras alternativas sérias eu tenho? Dizer que o PHP vai perder relevância não faz muito sentido.

      Agora que o Python está na moda porque tem uma curva de aprendizado rápida, é uma linguagem simples e eles vendem para você como o «torne-se um programador em 20 horas com Python e trabalhe nele», com o apoio de empresas como Google e que agora existe a moda de procurar novas linguagens (Go, Dart….) para se diferenciar num CV (ou como o nascimento diário de 50 frameworks para Javascript!), não significa que as coisas mudem.

      Ruby é uma linguagem muito interessante, mas rompe tanto com os padrões estabelecidos que acho difícil acreditar que se tornou mais popular que o PHP. Claro, Ruby eu acho que é a pior linguagem para começar a programar de todas.
      Eu entendo que você me disse que Python pode ser divertido de programar, mesmo Ruby com sua infinidade de peculiaridades ... mas Spring com Java? Mesmo? Java pode ser muitas coisas ... mas mais agradável do que Python e PHP?

      É muito bom começar com Python, mas como você se limita apenas ao Python, corre o risco de que muitas empresas acreditarão que seu nível de programação não é "profundo" (mesmo se você for muito bom em Python). Isso ocorre porque você compete com outras linguagens "polivalentes", como C ++ ou Java. Você pode programar em Python sem saber a diferença que diabos é um ponteiro, operações bit a bit, como funciona um coletor de lixo e um longo etc.
      Python é talvez o menos semelhante à "programação clássica" que existe e pode ser vista como uma "linguagem para crianças" (entenda a metáfora), e isso por sua vez é uma vantagem e uma desvantagem.

      1.    Jorge FS dito

        "Python é talvez o menos semelhante à 'programação clássica' que existe e pode ser vista como uma 'linguagem para crianças' (entenda a metáfora), e isso por sua vez é uma vantagem e uma desvantagem." LOL, esta é uma das coisas mais engraçadas que eu vi dito sobre Python. Você realmente aprendeu Python?
        Há quanto tempo o mundo está fora do PHP?
        O amigo PHP nasceu morto. O PHP (\ d +) tem muitos problemas devido a um projeto inicial muito ruim e, para manter a comunidade de usuários, ele continua arrastando todos aqueles erros de projeto iniciais muito bem. O PHP nasceu sem modularidade, com muitas funcionalidades no estilo C (que por sinal, não sei de onde você tirou, já que sua sintaxe é semelhante a C, pode ser facilmente portado para outras linguagens). Uma linguagem de alto nível, como o PHP deve se comportar, tem coisas tão feias como essa trilha de funções listada em seu site oficial http://php.net/manual/en/indexes.functions.phpIsso porque nasceu sem modularidade, portanto tudo é uma bagunça e confusão e sem namespaces.
        Este é um trecho de código PHP:
        "Stream_notification_callback");
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        em algum ponto você pode determinar de onde todas essas funcionalidades de 'fluxo' foram importadas? NÃO, você poderia dizer então que eles são funções incorporadas, mas então todo o ecossistema é funções incorporadas ?. E então, há muito lixo no código PHP, que se você não é capaz de entender a complexidade e a inutilidade de um design tão ruim, me perdoe, mas ainda tem muito mundo para ver.
        O Wordpress é uma excelente solução de software, mas isso não significa que tenha uma boa base tecnológica. Você pode martelar com uma pedra e arrancar pregos com os dentes, e ainda pode fazer um excelente trabalho de carpintaria, mas é claro, com muito mais trabalho do que outro carpinteiro que usa um bom martelo.

        Por outro lado: “vire programador em 20 horas com Python e trabalhe nisso”, nunca vi tamanha estupidez. Você pode criar um site em PHP em 20 horas e sem ter nenhum conhecimento de como funciona a programação Web, ou da própria programação. Na verdade, é por isso que o PHP é tão popular, porque os novatos ao entrar neste mundo vêem o PHP como um ponto de desenvolvimento rápido (é por isso que tantos códigos PHP são tão ruins).
        Em relação às deficiências do Python, a única em que teve sucesso foi no trabalho com ponteiros, mas em qualquer caso, Python é uma linguagem de alto nível (como o Java) e não faz uso deles no nível de sintaxe; mas operações bit a bit, sério?, você quer dizer isso x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. Eu entendi seriamente a coisa do coletor de lixo muito menos: https://docs.python.org/3/library/gc.html.
        Lacunas do PHP:
        -PHP tem um design de programação orientada a objetos (OOP) muito pobre.
        - Você ainda não pode sobrecarregar os operadores.
        -Surpresa, function overloading em PHP não é o que você naturalmente espera desse conceito.
        … .. e eu fiquei entediado hehe.
        Saudações.

        1.    Ruben dito

          Coloquei entre parênteses "entender a metáfora" (comparando Python com C ++ / Java no mesmo ambiente de trabalho), é claro que você não entendeu. Eu poderia dizer que um programador C ++ pode aprender Python muito mais rápido do que um programador Python aprender C ++, assim como não é surpresa que o salário médio de um programador C / C ++ seja maior do que um Python.
          Eu poderia te explicar com outros exemplos, até com um desenho! mas parece que você só se concentra em descontextualizar e ridicularizar o que eu coloco.

          Em nenhum momento eu disse que PHP é a melhor linguagem do mundo ou que tem um design exemplar, não sei de onde você tirou isso. Acho que antes de julgar o conhecimento de outras pessoas, você deve melhorar sua compreensão de leitura. O que é verdade (e eu disse na minha mensagem) é que desenvolver com ele é muito ágil, além de todo o ecossistema de frameworks, bibliotecas e utilitários que você pode encontrar.
          Além disso, que tipo de comparação fazemos? Python como linguagem polivalente ou para a web? Nesse caso, por que o comparamos ao PHP? O PHP tem um campo específico, e é nesse campo que o Python (com 0.2% de participação, que não mudou neste ano) empalidece ao lado do PHP.
          Agora vamos ver as tendências do PHP; de 82,4% em janeiro de 2017 para 83.1% em janeiro de 2018: https://w3techs.com/technologies/history_overview/programming_language

          Python vai destronar o PHP? Em que ano? em que cinco anos? década?
          Python poderá ser usado em muitas outras tarefas, e até mesmo se tornar mais amplamente usado do que PHP, mas Python como uma linguagem de desenvolvimento web está a anos-luz de ser relevante, 0.2% estagnando contra 83.1% (com um aumento neste ano).

          Você também toma as coisas como certas dizendo que eu não saio do PHP, dando a entender que eu só conheço PHP, quando precisamente não tenho programado em PHP há muito tempo haha. Atualmente, por motivos de trabalho, programo principalmente em Java.
          Também não disse que, ao programar em Python, você não tem conhecimento sobre bit a bit, um coletor de lixo ou um ponteiro. Em vez disso, você pode programar em Python mesmo sem saber o que é. No entanto, duvido muito que esse seja o caso de um programador C ++. E obviamente faço a comparação quando Python entra nesse campo de "linguagem polivalente", não para programação web.

          Tornar-se um programador em 20 horas é simplesmente uma piada, um exagero. No entanto, eu poderia colocar aqui vários links sobre plataformas de educação online e cursos que prometem coisas semelhantes. Não me culpe, culpe um mercado de trabalho que pensa que se tornar um "programador especialista" é uma questão de fazer um curso de 20 horas. E Python sendo uma das linguagens da moda e também, com a curva de aprendizado mais rápida ... branco e na garrafa.

          Eu insisto, você baseia sua mensagem em dizer o quão ruim é o PHP (o que em certa parte, eu concordo). Parece correto para mim, exceto que minha mensagem não é sobre isso, mas por que o PHP continuará a ser usado e não desaparecerá amanhã como você pensa.

          Uma saudação

  5.   ninguém dito

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

    1.    Chris ADR dito

      Recentemente um leitor me enviou uma recomendação de um livro Go para o meu e-mail, certamente uma linguagem a ser levada em conta no futuro e da qual talvez haja um post aqui 🙂 Muitos gráficos para compartilhar

  6.   mvr1981 dito

    Bem ... e o que eu programo? Por que aprender uma linguagem de programação hoje com programadores tão bons e experientes que já existem? Que problemas posso resolver que outros ainda não resolveram de uma forma muito mais eficiente?… Resumindo: Quão original é ser programador hoje? Como posso colaborar com outras pessoas sem ser chutado ou excluído por minha falta de conhecimento e experiência?

    1.    Chris ADR dito

      Olá mvr1981, perguntas realmente interessantes 🙂 vamos rebobinar da última para a primeira.

      Como posso colaborar com outras pessoas sem ser chutado ou excluído por minha falta de conhecimento e experiência?

      Se você não quer ser chutado, o primeiro passo é aprender o processo, você não consegue imaginar a quantidade de pessoas que vêm aos projetos querendo fazer as coisas exclusivamente do seu jeito, querendo que a comunidade se adapte aos seus desejos. Certamente é como se eu fosse a sua casa e bagunçasse e desrespeitasse sua família (é assim que me sinto muitas vezes). Se você quiser evitar que isso aconteça, preste muita atenção nas orientações para contribuir, os meios pelos quais fazê-lo, e não envie algo incompleto, se precisar de ajuda sempre há meios de se comunicar, mas um trabalho mal feito provavelmente criará primeiras impressões ruins. Se você não quer se excluir, isso depende de você, você pode vê-lo como o programador inútil que não sabe o que está fazendo ou aquele que está se tornando um excelente programador, e isso só acontece com prática e certamente com bugs ao longo do caminho. Eu estive errado muitas vezes antes de obter meu status de desenvolvedor Gentoo, e isso não me impediu de tentar, apesar dos "maus momentos" 🙂.

      Quão original é ser um programador hoje?

      -Não se trata de originalidade, é uma necessidade hoje, basta pensar no seguinte, 20 ou 30 anos atrás, digitar era uma necessidade, muitos trabalhos inferiam que você sabia ou pelo menos poderia fazer. Hoje saber que o Office é uma necessidade, praticamente não há trabalho que não coloque você na frente dos documentos do Office. Amanhã, muito em breve, programar será uma necessidade. E isso também se aplica do ponto de vista pessoal, saber o que acontece nos programas aos quais você confia coisas tão importantes como o seu dinheiro, saúde, família, é algo lógico para mim, porque você só pode saber as limitações deles se souber como eles trabalhar e para saber disso, você precisa saber programar.

      Que problemas posso resolver que outros ainda não resolveram de uma forma muito mais eficiente?

      -Você ficaria surpreso com a quantidade de características que são necessários hoje, e para falar a verdade, não importa que existam os melhores programadores do mundo na comunidade, o trabalho será sempre maior que a capacidade de trabalho dos desenvolvedores, posso verificar isso no Gentoo, aí são pessoas que desenvolvem o kernel, pessoas que trabalham para o Google, Sony, etc etc ... a única coisa que todos temos em comum é que ninguém tem tanto tempo quanto gostaria para poder fazer todo o trabalho pendente.

      Por que aprender uma linguagem de programação hoje com programadores tão bons e experientes que já existem?

      -Isso é respondido na segunda pergunta 😉 Mas agora posso acrescentar que as gerações devem ser capazes de suportar o trabalho que já foi desenvolvido, com isso quero dizer que esses desenvolvedores "experientes" vão desaparecer gradualmente e isso será necessário para o " mais jovem »Os desenvolvedores se responsabilizam e ajudam a manter o ciclo vivo, uma comunidade que não possui jovens e inexperientes tende a desaparecer com o tempo, justamente porque não haverá oportunidade de transmitir conhecimento.

      E o que eu agendo?

      -Esta é talvez a coisa mais difícil de responder, mas vou tentar dar um exemplo poco Recentemente comecei a sofrer de problemas com o GNOME 24 e sua conexão com o Wayland que impedem programas como o Shutter de tirar screenshots. Isso é um problema para mim porque quando eu escrevo meus artigos, preciso mostrar o que digo 🙂 pesquisando um pouco cheguei ao aplicativo GNOME Screenshot, um tanto "minimalista" para dizer o mínimo. Entre suas funções, está a de tirar uma região da tela, mas o que acontece se eu não tirar a foto bem? Bem, tenho que sair e voltar a entrar no programa, algo entediante certamente, um botão que diga «Retomar» ou algo parecido que me permita fazer uma nova captura sem ter que sair e entrar de novo me ajudaria. projeto de programação, nunca programei nada no framework GNOME, então obviamente tenho muito a aprender antes de enviar meu "patch" com o novo botão, mas ao longo do caminho eu aprendo a programar e com um pouco de sorte é integrado será de ajuda para mais de um quando estiver disponível para todos.

      Este é um exemplo, é algo simples e que com certeza qualquer outro programador "perito" já o poderia ter feito, mas devido à evidente falta de tempo, não tem sido assim, agora sou eu que tenho a possibilidade de o fazer sem realmente ser um super programador.

      Agora só depende de você encontrar algo que tornaria sua vida "mais simples" naquele software que você tanto usa, a beleza disso é que se seguirmos o conselho que vou lhe dar nos próximos artigos, a linguagem não importará, porque eles saberão o básico para começar a entender o código que leem e o modificarão para fazer o que você quiser, isso é um sentimento muito especial 🙂

      Saudações e obrigado novamente

      1.    ninguém dito

        Acho que apenas depois de abrir o programa de captura do gnome, a coisa mais fácil é ir para os atalhos do teclado e atribuir três combinações de impressão para capturar todas as alt-print para capturar a janela ativa e superimpressão para fazer uma seleção do região de captura, os atalhos disponíveis estão aqui, é simplesmente uma questão de atribuí-los

        1.    Chris ADR dito

          É por isso que damos um exemplo 🙂 porque pequenas coisas como esse botão são uma programação, podem ajudar alguns, pois podem passar despercebidos por outros, mas certamente cumprem o objetivo principal, ajudam a aprender a programar e dão lugar a novos recursos, Depois desse botão, muitas coisas podem ser iniciadas, como um gerenciamento de sessão ou uma tela de visualização de todas as fotos tiradas, ou em suma, muitas coisas que poderiam ser feitas. A ideia é que você encontre algo que te faça saltar a curiosidade, qualquer software que rode em seu sistema pode precisar de melhorias ou novos recursos que por falta de tempo ou pessoal ainda não foram implementados 🙂

      2.    mvr1981 dito

        Graças a você. são respostas muito boas.

    2.    Projeto de lei dito

      Pois bem, para quem não pretende ser um profissional da área, seria necessário ver em que ambiente trabalha, tanto para tarefas administrativas quanto para diretivas pode ser interessante saber, por exemplo, Python / Basic e saber como para programar macros em pacotes de escritório, como LibreOffice ou MS Office. Há momentos em que isso pode economizar muitas horas de trabalho para você ou outros trabalhadores que o cercam e pedir-lhes para realizar qualquer tarefa repetitiva, você pode criar um painel para calcular rapidamente as principais proporções da empresa após conectar-se com o banco de dados dela e execute alguma consulta SQL.
      Como tudo, se você conhece as ferramentas ao seu alcance, pode pensar em como tirar o máximo proveito delas. Nem tudo é inventado.

  7.   Marcelo dito

    Guillermo, concordo totalmente com você, “Nem tudo se inventou” e o que se inventou é modificável. Você deve obter o máximo das ferramentas e usar aquela que melhor se adapta às suas necessidades.

  8.   Ricardo dito

    Para programação, a primeira língua a se aprender é o inglês, então a que mais os agrada e parece mais bonita para eles.

    1.    Chris ADR dito

      Eu não tinha escrito, mas é verdade 🙂 saber inglês ajuda muito, já que a maioria dos idiomas são escritos nele, mas também porque a maior quantidade de informações em primeira mão também. Muito obrigado por compartilhar

  9.   Rubem Salgado dito

    Excelente artigo, além de motivador.

    1.    Chris ADR dito

      Muito gentil, muito obrigado 🙂 Saudações

  10.   Gonzalo Martinez dito

    Programar é saber como raciocinar e traduzir esse raciocínio em instruções.

    Dois esclarecimentos sobre o artigo:

    1) Com base na minha experiência como professor de programação por quase 10 anos, não importa com qual linguagem você aprende, mas como você aprende e quão complexo é.

    Acho que uma linguagem que pode ser aprendida de forma estruturada e, em seguida, passar para outras coisas mais complexas, é mais fácil do que começar com uma linguagem como Java desde o início.

    É mais fácil aprender algo como um Hello World em C ou Pascal como base, do que com algumas linhas (PROGRAM no caso de Pascal, ou #include No caso de C) você pode começar a desenvolver o algoritmo e codificar o programa com sua lógica diretamente, como em Java, que em si precisa de uma classe, um método e algumas outras coisas que para um iniciante é uma sobrecarga de informação desnecessários, e que podem muito bem ser ignorados e passar para outras coisas, mas são conceitos que existem e, na minha opinião, ignorar as coisas não é uma boa maneira de aprender, principalmente se a linguagem o obrigar a usá-los. É como começar um treino de tiro ao alvo pela primeira vez com uma M-16 e atirar por meses no modo semiautomático segurando o cabo com as duas mãos como uma pistola.

    2) Se uma linguagem é interpretada ou compilada depende de sua implementação, não da linguagem em si. Por exemplo, se Python for usado, para um aplicativo da web que usa wsgi (mod_wsgi no apache ou uwsgi para Nginx), o código python é compilado ao iniciar o módulo correspondente, gerando arquivos .pyc

    Existem também geradores de arquivos binários para java (que geram binários nativos em vez de bytecode), ou compiladores de scripts php em binários puros.

    Quanto ao que dizem sobre o PHP, trata-se simplesmente de uma linguagem desenhada em outra época, com outras coisas em mente, e sem considerar aspectos que não existiam na época. É claro que o fato de ser a mais utilizada não a torna a melhor para nada no mundo, mas é uma realidade: é a linguagem com a qual há mais chances de conseguir um emprego em toda a programação. Saber que não dói, mesmo que você não goste.

    Mesmo eu trabalhando como administrador de sistema há vários anos e deixei o trabalho de desenvolvedor, de vez em quando tenho que colocar código PHP em algo.

    1.    Chris ADR dito

      Oi Gonzalo, obrigado por compartilhar,

      Certamente por falar em sobrecargas de informação desnecessárias, saber que uma mesma linguagem pode ser interpretada ou compilada é algo que não é necessário nesta fase 🙂 Certamente a implementação é importante, mas se dissermos isso neste nível, não geramos mais do que confusão. Da mesma forma, não são abordadas questões de programação orientada a objetos, ou outros conceitos que devem ser dosados ​​gradativamente para não deixar as pessoas tontas.

      Como o espaço é limitado, o objetivo principal da postagem é mostrar aos leitores que desejam programar que existem dois grandes mundos de linguagens, que as interpretadas "tradicionalmente" são mais "simples", que as compiladas "tradicionalmente" são um pouco mais "complexo" mas que vale aquele nível de complexidade para ter um entendimento mais sólido e que cabe a cada um escolher a linguagem, já que dependendo da abordagem de programação, eles poderão escolher seus projetos favoritos e no ao mesmo tempo, eles serão capazes de entender o que lêem e / ou escrevem 🙂

      Muito obrigado novamente, saudações.

      1.    Gonzalo Martinez dito

        Isso é um erro, não existem linguagens compiladas ou interpretadas, existem intérpretes e compiladores para cada linguagem, ambos para casos diferentes.

        Não é uma sobrecarga de informação mencioná-lo agora, é um erro fazer tal afirmação. Na minha opinião, teria sido mais produtivo ignorar os intérpretes se você não quisesse se sobrecarregar de informações.

        1.    Chris ADR dito

          Obrigado pelo esclarecimento, vou levá-lo em consideração quando voltar ao assunto. Felicidades

  11.   Ares dito

    Qual linguagem você recomenda para o lado do servidor, considerando que o php caiu em desuso?
    O mesmo para bancos de dados, não sei se haverá algo melhor e mais moderno que o mySQL.

    1.    Chris ADR dito

      O PHP ainda não caiu em desgraça ... Cada linguagem tem o seu ciclo de vida, e certamente o php já é uma linguagem que entra na escala dos "maduros", o que o torna útil a nível empresarial, onde a estabilidade é acima de tudo ... Como alguns bancos onde ainda é desenvolvido em java, que é mais "maduro" que php e certamente tem seus seguidores e detratores ... E sem falar em COBOL ...

      Se o que você busca é uniformidade e modernidade, o javascript está se tornando um dos favoritos dos chamados “full stack developers”, embora o paradigma ruby ​​ou a “simplicidade” do python também sejam boas referências…. Até mesmo o perl pode ser a opção dependendo das necessidades 🙂

      Hoje em dia o ORM (object relational mappers) está ganhando muita força em termos de gerenciamento de dados relacionais. Vai da sintaxe SQL à manipulação de classes e atributos ... Quase todas as linguagens (senão todas) lidam com algum ORM.

      . O Mongo DB é uma alternativa aos bancos de dados relacionais que se tornou bastante importante, porém, é necessário conhecer seus prós e contras e validar se seria a melhor solução dependendo da necessidade específica.

      Espero que ajude você, saudações 🙂

      1.    Ares dito

        Obrigado, vou verificar isso.

      2.    Ares dito

        Eu esqueci.

        O que você me recomenda para trabalhar com JAVA no Linux?
        Se você pode diferenciar melhor entre livre e fechado.

        1.    Chris ADR dito

          Eclipse e NetBeans são de código aberto, não tenho certeza se há algum software puramente livre, tenho o hábito de usar o vim porque às vezes a quantidade de código torna o uso de um IDE inteiro lento e sujeito a erros de execução. Saudações 🙂

        2.    paulzeta dito

          Para trabalhar com java no Linux eu uso o IntelliJ, recomendo.

          1.    Chris ADR dito

            PS, IntelliJ é um software proprietário 🙂

  12.   je dito

    Pessoal também lembram disso ... Eu trabalho em um banco e digo a vocês que as linguagens de programação ficam em segundo plano para deixar SQL e Stored procedures em primeiro lugar.

    1.    Gonzalo Martinez dito

      É preciso levar em consideração os stored procedures, mas por não usar uma linguagem portável entre engines, pelo menos na minha experiência, trata-se sempre de evitá-los a menos que não haja outra opção.