Jump to content
  • O que fazer com o C que se aprendeu na faculdade

       (0 reviews)

    Fernando Mercês
     Share

    Introdução

    Em muitas faculdades brasileiras a linguagem C é ensinada aos alunos de cursos de tecnologia. Mesmo assustando os novatos, vários alunos resistem e vencem a matéria. O problema é entender por qual motivo o C foi escolhido para iniciar o curso de programação. Seria uma linguagem didática para se aprender a programar? Um teste para ver quem tem ou não o “jeito pra coisa”? Alguns diriam que o correto seria começar com Pascal, mas há quem defenda linguagens mais modernas como Python, Perl, Ruby ou PHP. E aí, para que serve o C no primeiro período? Neste artigo farei uma análise sobre o que se aprende da linguagem, o motivo pelo qual ela surge no início do curso, seu valor de mercado e o que é possível fazer com esse start que a faculdade nos dá.

    A linguagem C

    A importância histórica da linguagem C é inegável e dispensa maiores comentários. Sabemos que até hoje a maioria dos softwares mais poderosos são feitos em C e/ou C++ (um super conjunto de C, orientado à objetos). O kernel Linux e outros núcleos de SOs são feitos basicamente em C. Muitos drivers de dispositivos como placas de rede, som, vídeo etc são feitos em C. Se contarmos o C++ nesta conta, chegamos perto de 100% dos kernels e drivers. Os interpretadores e compiladores das principais linguagens de programação também não fogem à regra e são feitos em C. Existe uma frase que afirma: metade do universo é feito em C. E é bem verdade. Pelo visto, a linguagem serve para alguma coisa…

    Ensino da linguagem C

    Você acabou de entrar na faculdade, está tendo aulas desta linguagem e não está entendendo nada? Não se preocupe, você não está sozinho. Algumas instituições de ensino acham que C é uma liguagem didática, quando não é. Para se aprender a programar, usa-se pseudo-linguagem, PORTUGOL e ferramentas do gênero. Nem mesmo o Pascal, considerado mais fácil de se aprender que o C, é atraente ou interessante à primeira vista. O grande monstro que aterroriza o aluno é a pergunta: “Por que eu vou fazer isso? Para que?”. Pois é, para que escrever um programa em C que calcule a média de três alunos e imprima na tela? Qual a lição tirada disso? A resposta é simples: nenhuma. A maneira como a linguagem é lecionada tenta empurrar o C guela abaixo em estudantes que viram, por exemplo, Visual Basic e Delphi no segundo grau. Isto é, se é que estudaram tais linguagens ou lembram-se delas. Não poderia dar certo mesmo.

    Antes de criar um programa, o aluno tem que saber o que está fazendo. O que é um programa, para que serve isso, o que é um arquivo executável, um binário, bits, bytes, o processador, dentre outros conceitos importantíssimos antes de se escrever o primeiro “Hello World”.

    O resultado do ensino forçado é o alto íncide de reprovação, abandono, mudança de curso e desistência. É comum encontrar alunos que estão no fim do curso de programação mas ainda não passaram nas matérias mais básicas de C. É o terror da faculdade. Definitvamente, a linguagem C vira uma vilã e a frase mais ouvida nos corredores sobre o assunto é que “C é chato”.

    Por que a linguagem C é chata?

    Porque ela não te mima. Numa escala onde o nível mais alto é o mais próximo da linguagem usada pelo ser humano e o mais baixo, da linguagem usada pelos microprocessadores, a linguagem C é considerada de nível médio. Assembly, por exemplo, é de baixo nível, enquanto Object Pascal (usada no Delphi), de alto nível. Isso significa que para programar em C é preciso conhecer conceitos mais próximos do hardware, que as linguagens de alto nível abstraem para o programador, tornando o trabalho mais fácil. Por isso temos a impressão de que C é chato, difícil, sem sentido. Realmente, sem os conceitos básicos de computação bem sólidos, um código em C pode tornar-se incompreensível. Vejamos um exemplo.

    Um código em PHP (alto nível) para se declarar uma variável e armazenar uma frase nela:

    <?php
    $str = Essa é minha string”;
    ?>

    Um código equivalente em C, seria:

    void main(void)
    {
    	char str[] = Essa é minha string”;
    }

    No código em C, uma função teve de ser escrita (a main, que é a função principal de um programa), inclusive com seu tipo de retorno e parâmetros, onde usei void para não retornar nem receber nada. Além disso, foi criado um vetor de caracteres (char) para armazenar a frase. Em C, entende-se como string um vetor de caracteres (ou ponteiro para um conjunto deles) onde o último caracter é o NULL, código 0x00 na tabela ASCII. Tá vendo por que se precisa dos conceitos de computação até para começar uma frase em C? Agora perceba a jogada:
     

    #include <string.h>
    
    void main(void)
    {
    	char str[21];
    	strcpy(str, Veja, sou uma string”);
    }

    A função strcpy(), fornecida pelo header string.h, copia caracteres para uma variável do tipo vetor (ponteiro, na verdade, mas isto é outro assunto) de caracteres e adiciona um caractere nulo (NULL), zerado, na última posição. Perceba que iniciamos o vetor de char com 21 posições, para abrigar os 20 caracteres da frase proposta mais o NULL, que é um caractere só. As coisas começam a fazer sentido, apesar de “feias”, não?

    E assim é o C. Exigente, porém elegante. Se tem os conceitos de computação, sem dúvida não terá grandes dificuldades com a linguagem.

    Usando o C na vida e no mercado de trabalho

    Certo, você se convenceu de que C é legal de aprender, poderoso e aprendeu. E agora, faz o quê? Tem um colega seu ganhando dinheiro fazendo sites em Ruby on Rails. Outro faturando uma grana fazendo sistemas em Delphi para clientes, com imagens, botões brilhantes e multimídia. O que você, recém-estudado programador em C vai fazer com aquela tela preta pedindo dados com scanf()? Nada. Não é assim que se trabalha com C, ou pelo menos, não mais. Já foi o tempo em que os sistemas eram feitos dessa maneira. Além disso, mesmo nesse tempo a linguagem C foi rapidamente substituída neste meio pela linguagem CLIPPER no mundos dos PCs e pelo COBOL, nos mainframes.

    O forte do C hoje são aplicações desktop, inclusive as baseadas em rede e daemons (serviços). C também é útil para escrever compiladores e interpretadores para outras linguagens, por exemplo. Sabia que o PHP é escrito em C? Pois é, assim como Python, Ruby, BASH e muitos outros interpretadores. Então tem alguém ganhando dinheiro com C por aí, concorda?

    Vale a pena citar também o desenvolvimento embarcados, para microcontroladores e vários microprocessadores, incluindo ARM (usado em vários aparelhos Android).

    Em novembro do ano passado houve uma edição de um evento chamado Universidade Livre em que Olivier Hallot, diretor da ALTA (antiga BrOffice.org) falou durante alguns minutos numa faculdade carioca da dificuldade de encontrar programadores para contratar e fez um apelo para que os alunos levem a sério que o mercado está muito carente de bons programadores, principalmente em C/C++. Também em setembro do ano passado uma empresa publicou uma vaga no Rio de Janeiro buscando um profissional com os seguintes conhecimentos:

    • Sistema Operacional Linux;
    • Banco de dados MySQL;
    • Criação e manutenção de tabelas, relacionamentos, scripts, etc.;
    • Linguagem C, e das APIs: (V4L2), GTK, além de OpenGL;
    • Adobe Flex.

    O salário inicial era de R$ 5.000,00. A vaga deve estar aberta até hoje…

    Em dezembro de 2011, uma grande operadora telefônica abriu nada menos que 20 vagas para desenvolvedores em C no Rio de Janeiro. Empresas que atendem infraestrutura, telecomunicações, embarcados, móveis, desenvolvimento do Linux e kernels derivados também precisam muito de programadores deste tipo. Enfim, vagas não faltam!

    Então por que aprendo Java na faculdade?

    A faculdade tenta ser a mais moderna possível, mas esquece de verdadeiramente orientar na profissão. Java é uma linguagem potente, flexível e poderosa mas tem um fim completamente diferente da linguagem C. Com Java se programa para web, dispositivos móveis, aplicações locais (pouco usada), sistemas de informação, embarcados etc. A flexibilidade é enorme, mas o foco é outro. Não se faz uma suíte de aplicativos em Java, simplesmente porque existe o C pra isso. Um sniffer de rede ou um software ping, por exemplo, são feitos em C, porque C é pra isso. Já uma interface de um aparelho GPS, é feita em Java. Questão de adeqüação. O mercado de Java é tão grande quanto o de C no mundo, mas é maior no Brasil. No entanto, o que não pode é a faculdade tratar a linguagem C como uma introdução à programação, para que o aluno depois aprenda Java. Uma coisa não tem nada a ver com a outra. São dois nichos completamente diferentes e em ambos os casos, é possível conseguir um bom emprego e alavancar na profissão, tanto aqui quanto fora.

    Minha faculdade usa Python para ensinar a programar. É legal?

    Não creio. Python é super divertido e viciante mas não exige os conceitos de computação que todo programador deve ter. A resposta é a mesma para todas as linguagens de alto nível. Como escrevi anteriormente, se começa a programar com uma pseudo-linguagem, para desenvolver a lógica. Antes do estudo de programação médio/alto nível, é preciso estudar computação, do ponto de vista da arquitetura em si (que vai incluir Assembly, SO etc) e aí sim, subir de nível. Se bem gerenciado, é possível manter estas disciplinas em paralelo, mas o programa deve ser cuidadoso (o que as instituições não andam respeitando – Eu já vi projeto de bancos de dados no segundo período. O aluno, teoricamente, nunca usou uma mysql.h ou outras bibliotecas para acesso a SGBD’s em outras linguagens).

    Quem aprende direto no alto nível e se dá bem, ótimo – e está de parabéns. Mas o objetivo do artigo é trazer a linguagem C à tona e não competir com outras linguagens.

    Venho comprovando a tese de que aprender “de baixo para cima” dá certo. Já consegui fazer um amigo escrever um programa em Assembly do zero para calcula a média de alunos. Aí sim ele viu o que é obter dados do teclado, calcular e exibir. Teve de entender por completo a tabela ASCII, uso de registradores gerais, syscalls e interrupções de software. Quando foi para o C, não teve o menor problema.

    E o que dá pra fazer com o C aprendido na faculdade?

    Só com ele, não muita coisa, mas com um pouquinho de pesquisa e afinco, gera-se resultados. Um exemplo é o grupo Coding 40°, onde eu e mais três alunos do curso de Ciência da Computação nos unimos para estudar e acabamos desenvolvendo um pequeno software, capaz de imprimir informações sobre executáveis PE (.exe, .dll etc) na tela. Nada complicado, agora que já está pronto. rs

    Sabe quando você está no Windows e vai nas propriedades de um .exe ou .dll e há uma aba “Versão” como na imagem abaixo?

    1-versao-tab.png.8b374d53e2115d14146a1127a8d6e160.png

    A proposta inicial era criar um software capaz de conseguir essa informação, recebendo como entrada o caminho do arquivo executável. O software deveria funcionar no Linux, já que nesse SO não é possível ver esta aba “Versão” nas propriedades dos executáveis de Windows, obviamente. Foi aí que fizemos o pev. Hoje ele já exibe várias outras informações sobre o executável além da versão.

    Conclusão

    Estudar C, C++, Assembly e outras linguagens tidas como “terríveis” é, sem dúvida, uma boa pedida. Há inúmeros projetos no mundo todo precisando de bons programadores nessas linguagens. Não encare o “C de faculdade” como um vilão ou uma introdução à programação porque não é. A linguagem C é uma linguagem poderosa e comercial. Nada de dizer que C é coisa de maluco.

    Ainda não sabe o que fazer com C? Está em dúvida sobre seus aspectos modernos? Nós temos um curso de programação moderna utilizando a linguagem C para você :)


    Revisão: Leandro Fróes
     Share


    User Feedback

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.
    Note: Your post will require moderator approval before it will be visible.

    Guest

    • This will not be shown to other users.
    • Add a review...

      ×   Pasted as rich text.   Paste as plain text instead

        Only 75 emoji are allowed.

      ×   Your link has been automatically embedded.   Display as a link instead

      ×   Your previous content has been restored.   Clear editor

      ×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Bruna Chieco
      Com 8 anos de idade, Ana Carolina da Hora já sabia que queria ser cientista. Aos 12, já tinha começado a programar. Nascida em Duque de Caxias (RJ), Nina, como é conhecida, sempre gostou de computação, e aproveitou o apoio da família durante a infância e adolescência para explorar a área com recursos que tinha dentro de casa mesmo. Nina vem de uma família de professoras, então a educação sempre foi muito forte em seu ambiente familiar. "Aqui faltava qualquer coisa, menos livro. Eu lia livros de ciência para crianças em quadrinhos. Também li 'O homem que calculava', de Malba Tahan, que é antigo e fez parte da infância de muitas pessoas. Muita gente fala que se interessou pela matemática por conta desses livros. Eu lia e ficava imaginando como foi possível para esses cientistas e filósofos terem as ideias que eles tiveram", conta Nina. 
      Interessada em tecnologia, Nina desmontava aparelhos de DVD e minigames em casa, até que um dia aproveitou o computador de sua tia para programar. "Sempre tive muita liberdade para fazer isso mesmo sem as ferramentas que as pessoas ricas ou de classe média tinham. Os livros me ajudaram muito, e os desenhos e programas que eu assistia de ciência também, além de professores que nessa fase me ajudaram a buscar conhecimento de formas diferentes".
      Mesmo com todo esse interesse, Nina não sabia direito o "nome" da profissão que ela queria seguir, até que ela descobriu que era Ciência da Computação. "Não só pelo título de cientista, mas por querer passar pelo caminho e pela história da computação, e não só fazer parte do resultado. Eu fui saber isso com quase 17 anos, quando fui prestar vestibular", conta.
      Foi com essa idade que Nina foi aprovada em uma universidade pública. Alguns anos depois, em 2015, ela migrou para a PUC-Rio, onde está agora finalizando o último ano de curso, aos 26 anos. "Desde que entrei na faculdade eu já trabalhava. Fiz curso técnico em informática e comecei atuando nessa área como estagiária. Virei professora porque me dava bem com os alunos e tirava dúvidas deles no laboratório". Foi assim que Nina passou a dar aula de programação com 18 anos.
      Depois disso, ela foi trabalhar como desenvolvedora em inteligência artificial, mas seu objetivo mesmo sempre foi seguir na área acadêmica. "Por isso eu fiz muita coisa, participei do Apple Developer Academy 2018-2020 e de programas de pesquisa da PUC. Durante a universidade, trabalhei em duas startups de robótica no Brasil desenvolvendo produtos e robôs. Também trabalhei em ONG por dois anos, com a ideia de democratizar a computação. Trabalhei em escolas, startups, empresas, ONGs e laboratórios de pesquisa", diz. 
      Agora, perto de se formar, Nina já vai direto iniciar seu doutorado. "Sempre vou atuar na sociedade civil, mas eu gosto da pesquisa e de dar aula, pois acho que é uma forma de se manter sempre atualizado". Toda essa trajetória de Nina converge para a criação de um instituto de computação em Duque de Caxias, que é o próximo projeto no qual ela quer investir. "Para isso preciso ter minhas experiências, entender o que é necessário para esse ambiente". Nina conta que o instituto será focado em educação tecnológica de computação. "O foco é desenvolver cientistas, e não só preparar pessoas para uma carreira profissional. O objetivo é parar de pensar nas pessoas como objeto de mercado de trabalho. Meu público-alvo será os mais jovens e negros, que geralmente querem entrar nessa área e não tem oportunidade, mas também quero atingir um público mais velho". 
      Desafios e preconceito
      A carreira de Nina é repleta de conquistas e aprendizados, mas quem vê de fora nem imagina as dificuldades de ser uma mulher negra em uma área predominantemente composta por homens brancos. "Continua sendo um desafio, acho que as pessoas têm bastante problema em lidar com mulheres negras em posições de tomada de decisão", diz. Segundo ela, essa dificuldade vem de uma ideia de que as decisões dentro da área devem ser objetivas e frias. "Quando colocam mulheres negras, que são pessoas que humanizam os projetos nas ciências exatas, por todo nosso background, há uma dificuldade das pessoas em saber lidar, porque não seguimos os padrões e estereótipos dessa área". 
      "A dedicação que tenho que ter é o triplo da dedicação que um homem branco que trabalha
      na mesma área que eu"
      Mesmo tendo encontrado muitas portas abertas ao longo de sua trajetória, Nina conta como é a pressão de ter que se reafirmar para ser aceita como profissional e cientista. "Ninguém tem noção de quantas vezes por dia eu tenho que provar que sei o que estou fazendo. Hoje em dia eu sei provar mais rápido. Mas a dedicação que devo ter é o triplo da dedicação que um homem branco que trabalha na mesma área que eu". 
      Nina conta que por ser uma mulher negra e fazer parte da comunidade LGBTQIA+, ela acompanha muito de perto a dificuldade que há nas empresas em trabalhar com diversidade e inclusão. "Não adianta colocar essas pessoas em um ambiente tóxico, pois elas serão prejudicadas. Até mesmo nas redes sociais, quando tenho que criar conteúdo, sou cobrada a provar que sei sobre o que estou falando. Mas eu sou assídua na internet, e eu respondo o que sei responder. Se eu não souber, eu falo que não sei. Ainda assim, as pessoas estão sempre esperando que a gente responda a altura do que elas consideram o certo".

      Nina participou do Apple Worldwide Developers Conference (WWDC) em 2018
      Dificuldades na área de cibersegurança 
      Nina também trabalha com ética e inteligência artificial responsiva, e a cibersegurança sempre esteve muito perto das outras áreas em que atuou. "Não tinha a oportunidade de colocar em prática, mas quando comecei a fazer pesquisas, fui para o estudo de criptografia. Agora estou mais perto de projetos focados na segurança digital no Brasil. Não posso revelar o nome de todos, mas também sou conselheira de segurança do TikTok". Esse conselho consultivo foi pensado para a segurança da informação, explica Nina. "Tem sido interessante colocar em prática a experiência que eu tive".
      Mas na área de segurança, Nina também vê diversos problemas. "É um setor muito fechado, não acostumado a ter mulheres negras protagonizando, participando das construções de projetos". Ela conta que muitas decisões prejudicam a vida de pessoas negras. "Não dá para lutar pela abertura dos dados, por exemplo, se você não luta pela segurança. Temos muitas mulheres parlamentares negras sendo ameaçadas porque os dados delas estão abertos, sem segurança, personalizando a pessoa. O cruzamento das informações é prejudicial para o que queremos construir em cidadania digital e segurança", aponta. 
      "O cruzamento das informações é prejudicial para o que queremos construir em cidadania digital
      e segurança".
      Ela conta que nessa área é preciso entender o contexto em que uma ferramenta será inserida. "Precisamos reconhecer que estamos em contextos diferentes para falar em segurança digital. Estou participando da construção de ferramentas que lidam com violência política, por exemplo. Como foi fazer uma ferramenta para ser usada por uma parlamentar negra de São Paulo e ao mesmo tempo por uma parlamentar indígena do Nordeste? É preciso adaptar sem perder a essência. Esse é um exemplo, e não é fácil, mas as pessoas precisam não ter medo dessa dificuldade e complexidade, senão somente avançaremos com as ferramentas, que daqui a pouco não serão mais usadas, mas não avançaremos com pensamento crítico".
       
      Hacker Antirracista
      "Em todos os lugares que eu passei, vi coisas parecidas, desde pessoas falando abertamente que não gostavam da minha atuação porque sou negra e que eu não tinha que levar questões raciais para a empresa, até pessoas que não queriam que a pesquisa que eu estava fazendo na época abordasse questões raciais. Não tem como a gente estar nesses ambientes e não lutar por respeito", diz Nina. 
      "Quando vou em um evento, se me chamam de novo para o mesmo evento eu falo que não, que tem que chamar outra pessoa negra. Isso é ser Hacker Antirracista". 
      Acompanhando – e vivendo – de perto todas essas questões, ela iniciou um movimento ativo para gerar a desconstrução desses padrões, e hoje se autointitula uma Hacker Antirracista. "Ainda não estamos perto do ideal. Por isso, quando vou em um evento, se me chamam de novo para o mesmo evento eu falo que não, que tem que chamar outra pessoa negra. Isso é ser Hacker Antirracista. Eu gero uma corrente para que essas questões não fiquem centralizadas em uma pessoa só".

      Menos30 Fest, festival de empreendedorismo e inovação da Globo que Nina participou
      Nina também trabalha com iniciativas que promovem o conhecimento sobre pessoas negras que atuam na área de ciências. O Ogunhê é um podcast que trata desse assunto. "Eu criei porque mantinha um diário desde a adolescência, quando descobri a área que eu queria atuar. Minha mãe e minha família ficaram com medo, por ser uma área de pessoas brancas e muitos homens, e aí eu comecei a pesquisar sobre cientistas de outros países, criei um diário e ele virou o Ogunhê. É mais uma prática antirracista, mas não só do meio tecnológico. Eu trago pesquisas alinhadas à sociedade", explica. 
      Apoio da família
      Sem a ajuda da família, Nina não teria chegado onde chegou. Foi sua mãe e suas tias que deram todo o suporte e o incentivo para ela descobrir, inclusive, o que realmente queria fazer. "Elas me faziam perguntas e me incentivaram a conversar sobre isso em casa. Eu não tinha muita gente com quem conversar sobre esses assuntos, e mesmo elas não sendo da área de exatas, – são todas da área de humanas e biológicas – me incentivaram a pensar em formas de buscar conhecimento para que eu não me limitasse". 
      O incentivo continua até hoje. Em casa, Nina é "provocada" a pensar no coletivo. "Não existe estar numa área como da computação e não pensar no que estou oferecendo para a sociedade. A computação só existe por conta de outras áreas, como engenharia elétrica e filosofia. Por isso sempre fui provocada pela família para explicar aqui em casa o que faço para minha avó, mãe, tias, e meus irmãos. São os primeiros testadores de qualquer coisa que eu coloco na rua. Se eles se entenderem, qualquer pessoa vai entender".
      "Você não está sozinha em nenhum ambiente tóxico, por mais que façam você acreditar nisso".
      Se você é uma mulher negra, ou representante de qualquer grupo de diversidade, e quer entrar na área de tecnologia, Nina tem um recado: "vocês não estão sozinhas". Ela diz que há muitas pessoas por aí que passam pelas mesmas dificuldades nesse caminho e que quando ela percebeu isso, viu que não iria desistir. "Você não está sozinha em nenhum ambiente tóxico, por mais que façam você acreditar nisso. Quando percebemos que não estamos sozinhas, conseguimos colocar os problemas na luz e ver como resolver, sempre coletivamente". 
      Nina contou ainda com uma base religiosa para conseguir seguir em frente diante das dificuldades, mas diz que independente de acreditar ou não em religião, todo mundo pode encontrar portas de saída. "Qualquer forma de ver a vida e qualquer perspectiva de base precisa ser revisitada nos piores momentos da sua vida", complementa.
    • By Bruna Chieco
      O livro Programação Shell Linux é uma referência completa sobre programação Shell nos sistemas operacionais Unix/Linux, e chegou na sua 12ª edição depois de mais de 22 anos que o autor, Julio Cezar Neves, veio adaptando essa obra. Apresentando o assunto de forma didática e descontraída, Julio se utiliza de exemplos e dicas de fácil compreensão para explicar para seu público como programar em Shell. Quem pensa que esse é um livro de cabeceira está enganado. É um material prático para ser usado do lado do computador, sendo uma referência completa da linguagem Shell. "Esse livro não é para estudar, é um guia de referência, porque ele está completo", diz o próprio autor, Julio Neves. 
      Ele conta para o Mente Binária como foi seu processo de construção desse rico material. "Tudo começou como uma brincadeira. Durante muitos anos eu fui gestor e de repente eu estava de saco cheio do meu departamento, não queria ficar administrando pessoas. Então resolvi abandonar essa área e voltar para a área técnica". Foi assim que Julio passou a atuar no suporte técnico. No início dos anos 1980, ele já tinha trabalhado desenvolvendo um Unix na Cobra Computadores e Sistemas Brasileiros, hoje BB Tecnologia e Serviços (BBTS). "Eu continuei usando o Unix, porque quando apareceu o primeiro sistema operacional da Microsoft, o DOS, ele saiu da costela do Unix. Se eu já tinha o Shell, para que eu iria usar o DOS?", diz. 
      Assim, Julio decidiu fazer um sistema para protocolo, transferência e check de integridade de arquivos via FTP para a empresa na qual trabalhava. "Eu fiz tudo em Shell". Ele passou a fazer treinamentos com seus colegas na empresa, e acabou escrevendo um manual no qual conta que tinha muita piada e conteúdo descontraído. "A cada treinamento que eu dava eu ia melhorando. Um belo dia minha esposa falou que isso tudo daria um livro", conta Julio. Foi assim que ele publicou a primeira edição do livro Programação Shell Linux, em 2000.
      Motivação
      Os treinamentos internos que Julio fazia em sua empresa sempre davam muita audiência. Ele conta que quando trabalhou na Cobra Computadores, foi feito um convênio com a Universidade Estácio de Sá, do Rio de Janeiro, que cedia as instalações para o pessoal da Cobra dar treinamentos. Em contrapartida, a Cobra dava suporte para a Estácio de graça. "Foi minha primeira experiência dando aula. Eu fiz um curso de didática com técnicas de apresentação e quando fui dar os treinamentos na empresa, anos depois, já tinha essa prática de didática. É uma coisa que gosto de fazer", conta. Hoje, Julio oferece treinamentos sobre Shell Script junto a Rubens Queiroz De Almeida (saiba mais sobre os treinamentos).
      Além do gosto por dar aulas, Julio conta que o livro é uma maneira de disseminar o conteúdo sobre Shell em uma linguagem fácil e acessível, o que não existe em outros materiais. Ele cita o Linux man pages, um manual escrito em inglês rebuscado, sem exemplos. "Praticamente tudo que tem no man pages tem no meu livro, só que o livro tem um monte de exemplo e bom humor. O man page não te ensina a programar, mas só a usar uma instrução. O meu livro mostra as instruções, de forma ordenada, e o funcionamento do Shell. Eu mesmo aprendi Shell pelo man pages, mas é muito chato!", avalia.

      "Meu livro mostra as instruções, de forma ordenada, e o funcionamento do Shell" – Julio Neves
       
      Por que um profissional precisa ter conhecimento de Shell?
      "Uma vez eu dei uma palestra sobre Shell e na hora das perguntas um cara falou que não gostava da linguagem. E eu falei que sem o Shell, o Linux não existe. Quando você dá boot na máquina, ela executa centenas de scripts em Shell; quando você loga, ela roda dezenas de scripts em Shell. Tudo que é feito na máquina está em C ou em Shell. O administrador de sistemas antigamente era obrigado a conhecer profundamente Shell", explica. 
      Na área de segurança, a necessidade desse conhecimento é igualmente importante, conforme explica Fernando Mercês, que é pesquisador na Trend Micro e fundador do Mente Binária. "O Linux é um sistema operacional obrigatório na área de segurança. Quem não conhece Linux, não consegue andar nessa área. E o Shell é o coração do Linux, é por onde um usuário controla o sistema inteiro e usa todos os recursos. Programar em Shell é obrigatório para automatizar o que precisa ser automatizado no Linux", explica Mercês.
      Ele conta que no lado dos ataques, por exemplo, do ponto de vista de segurança ofensiva, e também para criar defesas e ações de proteção de um servidor Linux diante de algum ataque, é preciso usar programação em Shell. "Se seu sistema Linux está sob ataque, você detectou isso e vai bloquear a comunicação do atacante para com o seu servidor, e isso vai ser um comando em Shell do Linux. Além do Linux ser um sistema operacional que precisa ser conhecido, programá-lo bem e saber operá-lo em nível de programação via Shell é essencial para um bom profissional, e um grande diferencial para profissionais de tecnologia em geral", destaca Mercês. 
      Para Julio Neves, não saber programar em Shell pode ser inclusive um risco de segurança. "A pessoa tem que saber Shell, porque a interface gráfica não sabe tudo sobre a digitação, e aí se ele tiver alguma dúvida, vai recorrer à Internet. Se ela fizer isso, pode colocar dentro do computador algo que pode ser ruim, um malware", diz.
      "Meu nível de Shell depois desse livro ficou muito acima da média", diz Fernando Mercês 
      Na experiência de Mercês, de fato o livro Programação Shell Linux é o material mais completo que se tem em língua portuguesa sobre o assunto. "Quando comecei a estudar Linux, em 2008, vi que os materiais que tratam do assunto introduzem o Shell, mas não vão muito além disso. Aí comprei a 6ª edição desse livro do Julio e me impressionei, porque além de ser muito mais profundo que as introduções que eu tinha lido, a didática é impecável. O livro realmente ensina a programar com alguém que sabe muito", conta. 
      "Meu nível de Shell depois desse livro ficou muito acima da média, mesmo no meio do mundo Linux, porque esse conhecimento veio de alguém que não simplesmente estudou, aprendeu e escreveu um livro. O Julio fez parte do time de desenvolvimento de um Unix. Ele foi capaz de criar um Shell. É uma pérola no Brasil". 
      12ª edição
      Julio Neves conta que ao longo do tempo, as edições do livro foram "engordando", cada vez contendo mais material. Mas nessa 12ª edição, ele acabou publicando o livro em uma nova editora, a Novatec, muito motivado a baixar o custo. "Eu estava achando o preço do livro um absurdo e resolvi pegar o livro, que tinha duas partes, um Shell básico e um Shell programação, e tirei o Shell básico para diminuir o custo do livro". 
      Ainda assim, o material continua com 600 páginas, já que ao longo do tempo Julio foi agregando mais conhecimento. "Na primeira edição eu disse que o intuito do livro não era ser um compêndio sobre Shell. Hoje, coloco ele como uma referência sobre Shell", destaca.
      O livro pode ser comprado online nesse link, e tem um cupom de 25% de desconto válido até o dia 30 de julho. Para utilizar, basta digitar PROGSHELL na hora de realizar a compra.

      Capa do livro Programação Shell Linux – 12ª Edição
       
      Falando em referência, o Julio também é uma inspiração para nós do Mente Binária, afinal foi o primeiro entrevistado no programa Papo Binário, em janeiro de 2016. Assista na íntegra:
       
    • By Bruna Chieco
      Virar um desenvolvedor de jogos pode ser o grande sonho dos apaixonados por games. São esses os profissionais que projetam e criam jogos para computadores, celulares e consoles, se envolvendo desde a concepção até a execução do projeto junto a uma equipe composta por produtores, designers, artistas, engenheiros de som e testadores. Essa galera trabalha para levar os melhores produtos a uma indústria que hoje é composta por 2,8 bilhões de jogadores em todo o mundo, gerando receitas de US$ 189,3 bilhões, segundo dados da empresa de pesquisa Newzoo.
      No Brasil, a Newzoo aponta que o mercado de jogos terá uma receita de US$ 2,3 bilhões em 2021. Ainda que aqui a indústria seja menor, as oportunidades para trabalhar na área estão crescendo mesmo para quem não é um aficionado pela profissão, como é o caso de Rodrigo Duarte Louro. Ao procurar estágio enquanto cursava a faculdade de Ciência da Computação, ele acabou se deparando com uma vaga em uma empresa de jogos pequena que tinha acabado de começar. 
      Na época, Rodrigo tinha 21 anos e confessa que esse não era seu sonho, mas acabou encarando o desafio. "Quando entrei na faculdade, eu não tinha muita ideia para onde ir. Nunca quis muito uma carreira específica, mas as possibilidades de mercado para quem é programador são grandes", diz Rodrigo ao Mente Binária. "Eu não manjava nada de games, mas estagiei nessa empresa por um ano, e foi onde eu comecei a gostar e aprender sobre desenvolvimento de games", conta. 
      Rodrigo saiu desse estágio para conseguir concluir a faculdade, mas no último semestre voltou a estagiar em outra empresa de games, a Tapps, onde está até hoje trabalhando com desenvolvimento de jogos para mobile. "Quando comecei a estagiar com jogos, eu gostei, e a menos que aparecesse uma oportunidade muito boa, eu decidi que não ia mais sair da área", relata.

      "A menos que aparecesse uma oportunidade muito boa, eu decidi que não ia mais sair da área" - Rodrigo Duarte Louro
      Já o caso de Murilo Costa é o mais tradicional para quem trabalha com desenvolvimento de jogos: ser apaixonado pela área. "Desde dos 12 anos de idade eu já estava certo da vida que queria trabalhar com jogos, e nessa idade já tinha começado a programar", conta Murilo ao Mente Binária. Foi assim que ele acabou fazendo um curso técnico em informática aos 15 anos. "Eu já queria entrar na área de jogos, mas no Brasil era difícil", destaca.
      Por certa falta de oportunidade, Murilo acabou entrando no mercado de TI como desenvolvedor de software, atuando nessa área por cerca de 7 anos. Enquanto isso, ele também cursou a faculdade de Ciência da Computação. "Eu tinha 22 anos quando consegui meu primeiro emprego como estagiário em jogos. Eu ia para essa profissão de qualquer jeito, mesmo que por conta própria. Mandei muito currículo, porque o mais importante era começar de algum jeito, e depois ir encontrando meu espaço", ressalta. "Eu me permiti voltar para a estaca zero quando entrei na indústria de games. Quando decidi sair do emprego de desenvolvedor de software e ir pra jogos, eu já era CLT e estava quase virando um profissional pleno dentro da empresa, mas decidi voltar a ser estagiário para começar na área", conta. 

      "Eu me permiti voltar para a estaca zero quando entrei na indústria de games" - Murilo Costa
      Murilo ficou durante 5 anos e meio nessa empresa, começando como programador de jogos mobile, e aos poucos foi crescendo internamente, até virar coordenador. "Passei a trabalhar como gestor, participava da contratação e desenvolvimento de outros programadores", diz. Mas no ano passado, Murilo decidiu que queria voltar a programar, e foi aí que começou a trabalhar no estúdio Rogue Snail como programador sênior. "O que eu gosto é da área de programação", pontua.
      O que precisa para ser um desenvolvedor de jogos
      A complexidade da profissão pode variar dependendo do tipo de jogo que será desenvolvido, mas para quem quer começar, é preciso saber o básico de programação. "Na faculdade não tem nada específico para o mercado de trabalho. Se você tem uma base de programação forte, está preparado para tudo, mas não é especialista em nada", diz Rodrigo. Ele conta que apesar disso, há cursos mais focados em jogos. "Na Tapps muita gente que trabalha comigo fez um curso de design de jogos na Fatec e na Anhembi. No meu caso, não fiz nenhum curso específico. Agora, com 7 anos de experiência, tenho uma noção das outras áreas, mas o background de programação dá total liberdade para fazer os jogos", diz.
      A dica é saber duas linguagens de programação, que são as mais adotadas em desenvolvimento de games: C# e C++. A primeira é utilizada pelo motor de jogos (game engine) chamado Unity, enquanto a segunda é utilizada pela engine Unreal. Apesar de essas serem as duas linguagens mais utilizadas, muitas empresas querem fazer suas próprias engines. "Na Unity você consegue fazer e exportar o jogo para cada plataforma específica, mas na Tapps a gente exporta só mobile, então usamos uma engine própria", diz Rodrigo. 
      O mais recomendável é estudar não somente a linguagem, mas aprender como a engine funciona e pode ser manipulada para se obter resultados. "Eu já praticava isso sozinho", diz Murilo. "Normalmente, quando as pessoas vão trabalhar com jogos, já tiveram contato com engines ou produção de algum jogo". Ele destaca que o ideal para treinar é participar de game jams, que são encontros de desenvolvedores de jogos com a proposta de planejar e criar um ou mais jogos em pouco tempo, geralmente variando entre 24 e 72 horas. "Isso ajuda as pessoas a terem contato com as engines e tecnologias. Mas precisa de um conhecimento básico em programação. Essa é uma recomendação para desenvolvedores de software no geral", destaca.
      Matemática e inglês são pré-requisitos
      Além de saber o básico de programação, é preciso ter uma noção tanto de matemática quanto de inglês para quem quer evoluir na carreira de desenvolvedor de games. "Os dois são bem importantes. Não é um impeditivo total não saber isso, mas vai facilitar muito sua vida", destaca Rodrigo. Tanto ele quanto Murilo recomendam no mínimo o conhecimento de leitura em inglês para que a atuação na área seja mais fácil. Isso porque muitos dos materiais de estudo em programação são nesse idioma. "Isso é uma barreira que pode atrapalhar", diz Rodrigo. 
      Os conhecimentos de matemática também são importantes para programação, na visão de Rodrigo. "Dependendo do jogo que você fizer, a matemática é utilizada mais ou menos na prática, mas ter esse conhecimento mais forte te faz um programador melhor sempre", afirma. Ele diz ainda que em alguns casos a geometria analítica é utilizada. "Se estou fazendo um jogo de tiro, preciso saber com qual força a bala sai da arma", explica.
      Mobile x console
      Tendo navegado no mundo mobile e agora no de jogos para computadores, Murilo conta um pouco sobre a diferença entre programar em um e para outro universo. "Jogos mobile gratuitos normalmente têm compras dentro, e os usuários podem assistir anúncios para obter recompensas. Também é preciso pensar que essa indústria é gigantesca, tanto em número de devices quanto de usuários. Você atinge o público de maneira mais global e tem que se preparar para lidar com menos recursos, porque o celular é menos potente que o console", diz. 

      Ele destaca ainda que a usabilidade é bem diferente no celular e no PC. "No mobile, precisamos pensar em como integrar compras e propagandas em tempo de execução do jogo, e games de console normalmente não têm isso. No PC, o jogo tende a ser mais fácil, por outro lado, que os demais jogos de console, por ser mais flexível em relação aos inputs de teclado, mouse, ou controle", relata Murilo.
      Mercado de trabalho
      O mercado de trabalho brasileiro para a indústria de games está crescendo, apesar das oportunidades ainda serem maiores em outros países. Na visão de Murilo, esse ainda é um setor de poucas empresas no Brasil, com algumas companhias grandes dominando, mas praticamente todas para desenvolvimento mobile, ressaltando que os jogos para celulares compõem a maior parte do mercado consolidado no país. 
      Murilo diz ainda que há alguns estúdios pequenos se desenvolvendo localmente, mas muitos ainda dependem de investimento externo ou de projetos institucionais que estimulem seu funcionamento. "Ainda temos poucas oportunidades e não temos tanta escolha". Ele adiciona que na área de programação, ainda há uma diferenciação para quem trabalha com desenvolvimento para bancos ou para web, e quem trabalha com jogos. "Tem uma procura muito alta de pessoas querendo trabalhar na área, mas a remuneração não é competitiva, e temos poucos estúdios. Mas tem crescido", avalia.
       
      "Não ter medo e não desistir da área"
      Para Rodrigo, o gargalo também aparece do lado da mão de obra especializada. "Sempre vejo vaga aberta, mas é difícil preencher. As empresas estrangeiras acabam tendo maior competitividade. Também é o sonho das pessoas trabalharem em grandes companhias como Blizzard, King, etc. O mercado de jogos mexe com o sonho das pessoas, por isso muitas delas já escolheram a faculdade porque queriam fazer games. Mas ainda vejo que faltam profissionais especializados, e isso é na área de programação em geral", pontua. 
      Mesmo com esses desafios, não ter medo e não desistir da área é a dica de Rodrigo para quem quer atuar como desenvolvedor de games. "Se você tem um background de programação, já é um programador e quer migrar de área, pesquise o mercado, pois tem muita empresa sólida. E quem não é programador e quer fazer jogos, precisa começar a estudar programação em geral, ter um nível mediano. Não precisa focar em jogos inicialmente, mas depois comece a pegar tutoriais, estudar engines e fazer jogos simples. Explore a parte criativa, porque isso gera muito conhecimento", indica.
      "A participação em game jams ajuda muito"
      Murilo também destaca a importância de tentar construir um portfólio, reforçando que a participação em game jams ajuda muito nesse sentido. "É uma oportunidade de conhecer pessoas da área, estabelecer contatos e mostrar o trabalho. É preciso ter a experiência de fazer um jogo para entender quais são as partes que precisam ser melhor desenvolvidas", ressalta. 🎮
    • By Felipe.Silva
      Livro em Português sobre Assembly em constante desenvolvimento. É de autoria do @Felipe.Silva, membro da comunidade aqui! 🤗
    • By Fabiano Furtado
      Pessoal, disponibilizei no meu GitHub o meu primeiro projeto OpenSource, como forma de retornar para a comunidade o que tenho aprendido nestes últimos anos.
      O projeto se chama LIBCPF (C Plugin Framework - https://github.com/fabianofurtado/libcpf/) e se trata de uma biblioteca/framework pra gerenciamento de Plugins (".so") no Linux, feita em C. Para maiores detalhes, veja a documentação no arquivo README.md.
      Ela foi lançada utilizando-se a licença GPL v2, uma vez que não entendo muito sobre esse assunto e precisava de uma licença para o projeto.
      Espero que, de alguma forma, este projeto possa ser útil para você. Mesmo que não exista a necessidade de utilização desta lib em sua aplicação, a mesma pode ser usada para listar os nomes das funções e os offsets que existem dentro de uma shared library, algo que considero bem interessante. Veja no exemplo como isso funciona.
      Como qualquer programa em C, o desenvolvimento deu muito trabalho pois tentei desenvolvê-la com foco na segurança, tentando evitar possíveis "buffer overflows" ou qualquer outro tipo de vulnerabilidades.
      Sugestões e críticas serão sempre bem-vindas!
      Desde já, agradeço.
×
×
  • Create New...