Qual idioma para iniciar no Linux? [fechadas]

19

Estou prestes a começar um diploma de quatro anos em segurança da informação na Purdue. O diploma não exige nenhum curso de programação. Portanto, a única vez que poderei fazer uma é a eletiva ocasional. Portanto, a maior parte do meu aprendizado será por conta própria. No início do meu último ano do ensino médio, decidi mudar completamente para o Linux. Até agora, tenho aprendido algumas coisas sobre Linux e segurança. No entanto, também acredito que será importante para mim também aprender algumas linguagens de programação.

Basicamente, estou planejando aprender a programar lado a lado e aprender a usar o Vim. Portanto, provavelmente será um processo lento. No final, acho que valerá a pena. Como eu disse, vou abordar a segurança, então, principalmente, vou criar aplicativos relacionados à segurança, a maioria dos quais relacionados à rede. Eu também gostaria de começar a desenvolver aplicativos Android, mas isso acontecerá mais tarde.

Com isso dito, eu tenho algumas idéias. Eu estava pensando em começar com JavaScript, porque é multiplataforma e já o vi sugerido antes. Eu também tenho ouvido muito sobre Ruby ou poderia seguir a rota natural do Linux com C. Qual direção devo seguir?

JD Davis
fonte

Respostas:

53

Primeiro e mais importante: bashjunto com os utilitários de linha de comando comuns. Bashé a interface do usuário padrão para o sistema operacional, e muitos programas em um sistema Linux serão agrupados em um script de shell em algum nível. Pode ser peculiar, tem algumas idiossincrasias e muitas vezes parece absolutamente idiota, mas é algo com o qual você terá que lidar, portanto, fique à vontade. As ferramentas padrão, como grep, diff, head, tail, sort, uniq, e assim por diante, será muito útil não só com o script shell, mas com a sua produtividade na linha de comando.

Aprenda pelo menos alguns c. É no que estão escritos os níveis mais baixos do sistema e isso lhe dará uma melhor compreensão do sistema como um todo.

Escolha qualquer idioma de nível superior que desejar. Python, ruby, perl, java, O que quer - contanto que você goste. É aqui que você realmente começa a aprender como "programar" e, daqui em diante, será mais fácil aprender mais idiomas e continuar aprendendo .

JimB
fonte
2
Eu concordo com todos os pontos listados aqui.
31511 Joe
6
Se você deseja aprender o bash, deve incluir aprender sobre awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq etc. etc., etc.
jftuga
2
@jftuga Concordou. Uma grande porcentagem do meu kit de ferramentas são as habilidades para fazer "extração e integração de dados" - uma maneira elegante de dizer "manipular arquivos de texto formatados". Depois de entender o pipeline e conhecer as ferramentas comuns, você fica livre do fluxo de trabalho de qualquer software pré-fabricado. Eu também sou um grande fã do MS Powershell, que fica nos ombros de Bash em muitos aspectos.
AndyN
@jftuga - observou. Embora eu ache que isso seja importante, não acho que alguém novo no linux precise se preocupar em aprender as grandes armas como sed / awk em profundidade, mas eles devem ter compreensão suficiente para poder decifrar o código existente, caso o encontrem. .
JimB
8
Concordo com tudo, mas eu recomendaria o Python sobre os outros como uma linguagem de alto nível especificamente porque se tornou a linguagem de nível superior mais comum para ferramentas de gerenciamento de servidor. Você o encontrará com muito mais frequência do que ruby ​​ou java. Perl também é comum porque é muito antigo, então eu escolheria o próximo.
tylerl
10

Você descobrirá que todo mundo recomendará apenas seu idioma favorito. Meu idioma favorito é Perl, e é isso que eu recomendo. :) No entanto, além da minha preferência pessoal, existem algumas ótimas razões pelas quais você deve considerar o uso de perl:

Primeiro, perl é uma maravilhosa linguagem de uso geral. É fácil começar no perl escrevendo scripts simples para fazer o mesmo tipo de ação que você faz nos scripts shell, como manipular arquivos e tomar decisões com base na entrada do usuário. Isso fornece uma introdução muito fácil e gradual às idéias gerais de programação. O Perl já existe há algum tempo, portanto há muitos recursos (livros e sites) para começar.

Segundo, o perl é uma linguagem incrivelmente poderosa e expressiva que suporta todos os recursos de programação modernos. Uso-o há mais de quinze anos e ainda estou aprendendo novas maneiras de fazer as coisas com mais eficiência. Por exemplo, se você deseja explorar a programação orientada a objetos, o perl tem isso (principalmente através do Moose ).

Terceiro, o perl vem com o poder e a flexibilidade quase infinitos de seu repositório oficial de complementos, o CPAN . Por exemplo, para seguir a idéia de escrever um software de segurança, diga que deseja desenvolver algum tipo de scanner de segurança de rede personalizado. Em vez de escrever tudo isso você mesmo, você pode começar usando o NMAP :: Scanner como um mecanismo de verificação e, em seguida, escrever seus próprios ajustes e melhorias.

Por fim, se você deseja explorar a programação na web, o Perl também tem isso. Uma maneira moderna e popular de escrever software da Web no Perl é o Catalyst , que fornece uma moderna estrutura da Web MVC para o desenvolvimento rápido de qualquer tipo de aplicativo da web.

Juntando tudo isso, a vantagem do perl é que ele permite que você comece a escrever pequenos scripts e programas de linha de comando, e que gradualmente passe a escrever aplicativos modernos com todos os recursos. Obviamente, o preço dessa flexibilidade é complexidade. Cabe a você estudar e aprender como fazer as coisas da maneira certa, o perl não aplica boas práticas da mesma forma que outras línguas. Pessoalmente, gosto dessa liberdade, especialmente junto com todos os ótimos recursos disponíveis na Web para aprender a usar o perl.

Phil Hollenback
fonte
Perl é uma linguagem de script (principalmente); e na maioria das OS é programado em C.
Chris S
Claro, mas não acho que isso importe muito no contexto desta questão. Não parece que o OP realmente queira ou precise aprender sobre programação no nível do SO.
Phil Hollenback
Sugiro que o Perl seja uma boa maneira de escrever código para um aplicativo de segurança que tenha como alvo algo escrito em outro idioma (geralmente C) que você já entende. Portanto, se essa distinção fizer sentido, eu classificaria o Perl como uma ferramenta que você deve aprender a usar, em vez de um idioma que você deve aprender a entender (completamente).
precisa saber é o seguinte
6

Três idiomas o manterão em boa posição. Em ordem decrescente de importância (ou seja, o primeiro é o mais importante):

  1. Pseudocódigo . Muitas vezes, a implementação com a qual você está trabalhando será uma amálgama de meia dúzia de linguagens e ferramentas, apenas algumas das quais você conhecerá diretamente. Se você souber qual padrão está sendo implementado, no entanto, poderá descobrir qual entrada está sendo entregue a uma peça e qual saída ela deve fornecer, testá-la com exclusão e descobrir se é a peça que está quebrando.
  2. C . Para o bem ou para o mal, é o que administra o universo (Linux) e fornece uma visão suficientemente próxima do terreno para entender o que qualquer uma das linguagens de nível superior está realmente fazendo (por exemplo, PHP's passagem por referência ou modelo de encadeamento do Java).
  3. Apenas sobre qualquer outra coisa, exceto C ++ . Uma linguagem funcional como SQL ou, melhor ainda, Haskell, ou algo parecido com C-ey - se tudo mais falhar, o Java pode funcionar para isso, mas ainda é muito processual - obtém notas altas aqui; a idéia é envolver seu cérebro em torno de algo suficientemente completamente diferente do que você fez antes e não pode deixar de perceber as limitações do que você fez antes. Em termos de utilidade pura, o bash provavelmente também pertence a esta lista, mas se você não tiver uma base em outra coisa, acabará escrevendo C com sintaxe do bash, em vez de realmente explorar seu poder.
BMDan
fonte
1
+1 para pseudocódigo. Eu gosto de pseudocódigo em comentários e, em seguida, o código em torno de comentários
sreimer
2
+1 para pseudocódigo e "Qualquer outra coisa, exceto C ++". No mundo linux, você deve aprender pelo menos um script language, como pythonou PHP.
yegle
2
Não sei se o pseudocódigo é uma boa recomendação para iniciantes. O pseudocódigo será compreensível após a aprendizagem de praticamente qualquer linguagem do estilo c; portanto, deve-se realmente esforçar-se para aprender o próprio pseudocódigo? Sem mencionar, não existe uma sintaxe de pseudocódigo única, o que provavelmente confunde um iniciante.
JimB
@ JimB: O objetivo é aprender a pensar logicamente, independentemente do idioma. ERD, UML e similares são as ferramentas da torre de marfim para fazer isso, mas você não precisa aprender nada tão formal. A idéia é aprender a traçar seus pensamentos e comparar isso com o resultado esperado. Quando você percebe que, por exemplo, o banco de dados não tem como (inerente) saber quais cabeçalhos HTTP foram enviados como parte da solicitação ao servidor da Web, você pode eliminar uma variável da consideração. Da mesma forma, quando você escreve o pseudocódigo para uma função, geralmente identifica os casos de borda e canto que, caso contrário, não seriam.
precisa saber é o seguinte
Eu concordo completamente, só acho que apontar um iniciante para "pseudocódigo" causará confusão, já que não é algo formal. O pseudocódigo da maioria das pessoas será uma amálgama das linguagens do estilo c em que se sentem mais confortáveis, além de alguma sintaxe ad-hoc.
JimB
4

Você deve aprender várias línguas. Eu sugeriria começar com Python. É amplamente recomendado por ser fácil de aprender e por ser muito útil, muitos materiais excelentes de auto-estudo estão disponíveis gratuitamente, e acho que é amplamente utilizado por profissionais de segurança de TI. Quase toda vez que vejo profissionais de segurança postando código de demonstração, é Python.

bgvaughan
fonte
+1 para python, e Python não é apenas popular no mundo Linux.
X26
4

Estou prestes a começar um diploma de segurança da informação de 4 anos na Purdue. O diploma não exige nenhum curso de programação.

Eu sou o único a pensar OMG !!!! neste ponto?

Eu também acredito que será importante para mim também aprender algumas linguagens de programação

Eu diria que sim. Embora você não esteja realmente esperando se tornar um programador proficiente, provavelmente precisará das habilidades necessárias para simular / recriar ataques e entender como o processo de programação funciona. Você também precisará das habilidades para analisar dados e extrair informações de fontes em massa (como logs). JimB mencionou o bash - e, embora você sem dúvida esteja usando isso - leva apenas algumas horas para aprender os bits essenciais. Atualmente, o único lugar em que você provavelmente verá o bash é nos sistemas Linux - mas os outros shells são muito semelhantes.

Eu recomendaria aprender awk e / ou Perl para trituração de dados. Não se preocupe com qualquer requisito para marcar uma caixa orientada a objetos - mas eu recomendaria examinar também langauges não processuais.

Aprender C também o expõe a muitas informações sobre como o código se transforma em um programa executável (compilar é apenas uma etapa de um processo muito complexo).

A escolha óbvia para alguém interessado no desenvolvimento móvel / Android seria o java - mas o java tenta muito isolar o desenvolvedor de ter que lidar com as realidades dos protocolos operacionais e operacionais - é minha experiência que é aqui que você obtém problemas de segurança com o Java aplicativos. isto é, pode ajudá-lo a atingir seu objetivo final, e ficará bem em seu currículo, mas não espere que o aprendizado de Java complemente muito seu conhecimento de segurança.

symcbean
fonte
1
Você não é o único. : -o
Keith
2

Meu conselho:

  • bash(e seus tipos) não são linguagens de programação de uso geral. Embora seja possível realizar scripts sofisticados bash, não é a melhor maneira de aprender programação em geral. É a maneira mais natural de realizar tarefas de administração de sistemas que giram principalmente em torno da execução de outros programas, manipulando seus arquivos e diretórios de dados e organizando entradas e saídas de e para eles. Se bashfor um martelo, reserve-o para problemas que realmente parecem unhas. Aprender a fazer qualquer coisa não trivial bashserá consideravelmente mais fácil se você aprender alguns subconjuntos muito pequenos de sede awk(uma vez que a manipulação de strings bashé amplamente inspirada na sintaxe de operações semelhantes nessas "pequenas" linguagens).
  • Para programação de uso geral no Linux, você ouvirá muitos argumentos apaixonados. Os dois melhores candidatos são Perl e Python . Essas são linguagens de script de nível muito alto, de uso geral, que expõem funcionalidade de baixo nível suficiente para realizar quase qualquer operação acessível a qualquer processo de espaço do usuário no sistema, e com enormes coleções de módulos e bibliotecas pré-escritas disponíveis.

Eu recomendo que você leia um texto introdutório em C e gaste algum tempo executando os comandos stracee ltraceem alguns comandos simples de utilitários como lse mkdire /bin/echoetc. (Na verdade, atualmente, eu sugiro que ltrace -Ssubstitua, stracemas invista na saída dos comandos e no a ltracesaída aumentada pela -Sopção será extremamente educacional).

C é a principal linguagem de programação na qual o kernel do Linux e o GNU libc são gravados. (Peças pequenas estão em montagem). Quase todos os programas em um sistema Linux (ou outro tipo UNIX) estão vinculados às bibliotecas C (libc). Os principais intérpretes Perl e Python (e a maioria das outras linguagens de script) também são escritos em C. Esses programas (o kernel, as bibliotecas comuns do sistema e os vários intérpretes da linguagem de script) são todos escritos pelos programadores C, seu design e os recursos são fortemente influenciados pelas implementações subjacentes. Portanto, um entendimento mais profundo de qualquer um desses itens implica o entendimento C. Você não precisa saber nada sobre C ++ nem Java para entender a programação nesse nível. (Cada um pode ser interessante e necessário por si só, dependendo da sua carreira,

Portanto, se você concorda com minhas premissas até agora, reduzimos para uma escolha entre Perl e Python.

Aqui é onde começam as verdadeiras guerras de chamas.

Meu conselho é focar primeiro no Python (2.x). Python tem uma sintaxe relativamente simples e consistente. Você pode aprender o básico da sintaxe Python em algumas horas e essa é a grande maioria da sintaxe que você encontrará. Existem apenas alguns recursos (compreensões de lista, expressões geradoras, decoradores) que são rugas da sintaxe básica. Portanto, a maior parte de seu esforço em aprender Python será dedicada a aprender as extensas bibliotecas padrão e a tentar encontrar a "melhor" maneira de usá-las (e descobrir quais são os conjuntos específicos de exceções que valem a pena manipular para tornar seus programas robustos) e, mais importante, na aprendizagem dos conceitos subjacentes.

Eu acho que as extensas bibliotecas do Python e a sintaxe relativamente simples têm duas desvantagens distintas.

Primeiro, à medida que você aprende como agir em um nível muito alto no Python, você pode achar entediante o pensamento de ter que trabalhar em um nível mais baixo. Onde trabalho Perl é o padrão. Protótipo do meu trabalho em Python, onde sei que posso fazê-lo funcionar com muito mais rapidez e confiabilidade do que em Perl; então eu temo ter que passar e portar para Perl para meus colegas. (Eu era razoavelmente bom em Perl anos antes de usar o Python - por isso não é uma questão de simples familiaridade).

A outra desvantagem é que às vezes é difícil encontrar a maneira de nível mais alto para realizar uma determinada tarefa no Python. Por exemplo, para buscar uma página da web, você pode inicialmente tentar fazê-lo com soquetes de baixo nível ... o que funcionará. No entanto, você duplicaria bastante código que já pode ser encontrado, incluindo nos módulos urllibe / ou urllib2. O próprio fato de que as bibliotecas padrão, a partir da versão 2.7.1, inclui ambas, faz meu argumento. Sempre que possível, os mantenedores do Python estenderam os módulos e APIs mais antigos de forma transparente; no entanto, existem dezenas de casos em que o Python retém dois ou três módulos em que a extensão transparente não foi possível por algum motivo. (Para outro exemplo, você poderia olhar para as opções para analisar opções de linha de comando: argparse, optparseegetopt. Há pouco dano em escrever seus programas usando getopt(o mais antigo deles). Para utilitários muito simples, com poucas opções e uma convenção rígida de chamadas (usada apenas por um pequeno grupo de pessoas, por exemplo), então não há nada inerentemente errado em passar por cima de sys.argvsi mesmo. No entanto, geralmente vale a pena ler os documentos com atenção e seguir os links na parte inferior dos módulos de nível mais antigo ou mais baixo que descrevem os recursos de nível mais novo ou mais alto disponíveis.

Meu conselho é baseado na minha opinião de que você deseja se concentrar em conceitos mais profundos e não precisa gastar muito do seu tempo e esforço em questões sintáticas e específicas da linguagem. A compreensão de quando usar um subprocesso, versus um encadeamento ou os recursos de multiprocessamento incluídos no Python tem relativamente pouco a ver com a linguagem e tudo a ver com a proficiência em programação, independentemente da linguagem. (No momento em que você pode entender os argumentos sobre o modelo orientado a eventos do Twisted em comparação com o encadeamento e o multiprocessamento, provavelmente você já dominou o Python e estará pronto para programar em qualquer idioma).

O contra-argumento, para Perl, é simples e prático. Existem muitos outros empregos por aí que exigirão, especificamente, habilidades com Perl. O Perl é uma linguagem poderosa e possui bibliotecas extremamente extensas. (O núcleo do Perl distribuído com a maioria dos sistemas Linux abrange uma gama menor de funcionalidades do que as bibliotecas Python padrão; presume-se que você instalará um número significativo de pacotes adicionais da sua distribuição ou através do CPAN - o Comprehensive Perl Archive Rede). (Por outro lado, há menos módulos e pacotes Python que preciso buscar separadamente ... eles estão disponíveis no PyPI - o Índice do Pacote Python).

Portanto, se você aprender Perl, terá uma vantagem para encontrar empregos, principalmente empregos de administrador de sistemas, a curto prazo. No entanto, a sintaxe de Perl é ... bem ... nas palavras de alguns de seus próprios entusiastas ... "patologicamente eclética!" O Perl pode ser extremamente conciso e seu código é preenchido com um pouco de pontuação. Aqueles que o amam argumentam incessantemente que é "fácil" e faz todo sentido - e terão inúmeras oportunidades para fazê-lo em fóruns cheios de confusão sobre exatamente como um determinado trecho de código foi interpretado. A sintaxe e o idioma usados ​​na documentação e por quem os apóia em fóruns públicos são diferenciados ao ponto em que você pode gastar um esforço considerável para aprendê-los.

Agora, por favor, entenda que este comentário anterior é subjetivo e tendencioso. É possível que você tente o Perl e descubra que a sintaxe é intuitiva e agradável. Se assim for, mais poder para você. No entanto, pessoalmente acho que minha compreensão das idiossincrasias de Perl decai muito rapidamente. Mantenho os fundamentos, mas acho que é uma luta sempre que preciso voltar a ela por mais do que algumas linhas de código.

Existem muitas outras linguagens que você estudaria, Java, Lisp e Scheme, TCL, Scala e assim por diante. No entanto, sugiro começar com um que ofereça o melhor equilíbrio entre utilidade e simplicidade.

Jim Dennis
fonte
1

No mundo Linux, você deve saber duas coisas básicas:

  1. Regular Expression. Isso é um dever. RegExé uma "linguagem" universal, quando você souber usar expressões regulares, sua vida será muito mais fácil :-)
  2. " quick & dirty" é muito comum no mundo Linux. Se você pode realizar seu trabalho, por mais feia que seja a sua solução, você realiza seu trabalho.

Então, se você quer aprender uma língua no Linux, você deve escolher um script language, como python, PHP, ou mesmo bash scripting.

E, minha recomendação é PHP. É simples e feio. Possui um manual online detalhado . Tem um bom RegExsuporte. Isso é tudo.

yegle
fonte
2
Essa deve ser a melhor descrição do PHP que eu já ouvi ... Quando você tira a popularidade, não resta muito: P
Gordon Gustafson
Um tópico pouco interessante, mas acho que a principal razão para a popularidade do PHP é muitas das funções que estariam espalhadas por muitos biblioteca de vinculadores / pacotes em outras linguagens são padrão no PHP (como agrupar a maioria das coisas que você precisará em libc)
Phil Lello
1

Você pode executar praticamente qualquer tarefa em quase qualquer idioma, portanto, a escolha certa é ditada pelo problema que você está resolvendo.

Definitivamente, vale a pena conhecer idiomas das seguintes categorias:

  • Linguagens compiladas (como C / C ++ / Java). O C / C ++ é um bom lugar para explorar problemas de segurança com estouros de buffer, corrupção de pilha, etc.
  • Linguagens interpretadas (como PHP). Um bom lugar para explorar os problemas com variáveis ​​de tipo fraco e não detectar funções indefinidas até que você as chame
  • Linguagens de script (sh / bash / csh / ksh). Realmente útil para colar os muitos utilitários shell úteis (consulte / bin & / usr / bin)

Eu faria um esforço para aprender C / C ++, pois isso permite corrupção da pilha e acesso direto à memória. Isso é importante se você quiser experimentar problemas de segurança. Muitas linguagens têm sintaxe do tipo C (incluindo JavaScript), por isso é um bom trampolim.

Se você estiver trabalhando muito em um shell, o que eu acho que você está aprendendo com o vim, você acabará aprendendo scripts básicos do shell como um efeito colateral. O UNIX Power Tools foi um bom livro para aprender coisas mais avançadas; Não sei se ainda está publicado.

PHP também pode ser uma boa linguagem para aprender; a principal vantagem que oferece aos novos programadores é que há muita funcionalidade embutida, e não em uma biblioteca à qual você precisaria vincular (o que não é uma tarefa complexa). Por esse motivo, a navegação nos principais documentos ensina muitas coisas.

Phil Lello
fonte
1

Primeiro, alguns conselhos negativos:

Basicamente, o que pretendo fazer é aprender a programar lado a lado e aprender a usar o Vim.

Não faça isso. Encontre um editor que seja realmente confortável. Aprender o idioma e o editor é três vezes mais difícil do que aprendê-los em ordem (obviamente, o editor deve primeiro :-))

Como eu disse, vou entrar na segurança, então vou criar principalmente aplicativos relacionados à segurança. A maioria será relacionada à rede.

Aplicativos de segurança relacionados à rede? C é uma escolha fácil de entender aqui. Você precisará acessar a rede no nível da API do sistema, o que significa que C é o caminho a seguir. Obviamente, isso não significa que tudo precisa estar em C - uma biblioteca C + um $favorite-high-level-languageinvólucro pode economizar os aborrecimentos relacionados ao C em partes que não precisam de C.

Com isso dito, eu tenho algumas idéias. Eu estava pensando em começar com JavaScript, porque é multiplataforma e já o vi sugerido antes.

Aposto que foi sugerido em um contexto diferente do seu. O JavaScript tem seus pontos fortes, mas ainda não é uma boa linguagem de uso geral. O JS não possui bibliotecas padrão comparáveis ​​às disponíveis para C, Python, Perl, Ruby, Java e empresa.

Falando nisso, $favorite-high-level-languagemeu conselho é seguir o Python. Ele faz interface com o C, é fornecido com muitas bibliotecas úteis e tem muito mais bibliotecas disponíveis como complementos.

Rafał Dowgird
fonte
0

Não há nada de errado em aprender Javascript, mas ele é executado apenas em um navegador. Portanto, sua programação será limitada a aplicativos relacionados a páginas da web.

Provavelmente, existem tantas respostas para o 'o que é uma boa linguagem de programação para começar' quanto existem linguagens. Meu valor tuppence é que você poderia fazer pior do que começar com scripts básicos de shell, apenas vendo o que você pode fazer para automatizar tarefas sem usar nada além do shell, depois estenda isso usando Perl, ou uma linguagem semelhante que surgiu da necessidade de fazer tarefas mais complexas do que o shell é capaz, depois disso, e se você estiver realmente interessado, levará apenas algumas semanas, comece a usar C ou um derivado.

em branco
fonte
3
Apenas em navegadores? Não mais .
EEAA
Obrigado, permaneço corrigido, mas ainda não recomendaria o Javascript como ambiente de aprendizado. Para iniciantes, obter suporte para versões que não são de navegador seria um pesadelo.
blankabout
2
Eu sempre achei que o ECMAScript é a linguagem de programação e o Javascipt fica em cima do ECMAScript para fornecer funções úteis para manipular o DOM. Javascript é para o navegador.
precisa saber é o seguinte
0

Minhas recomendações? Hummm. Bem, você pode ter que decidir como vai. Para a faixa saudável e bem-arredondada, você pode seguir a rota usual do grau CS, talvez não nessa ordem.

(1) C / C ++ - Você pode obter o material orientado a objetos e pelo menos terá tentado. C ++ é o padrão 'profissional'. (2) Montagem (apenas um pouco - isso ajudará você a entender o funcionamento real do processador, memória, etc. - você não precisa se casar com isso.) (3) Python / Perl / Bash - Obtenha estes linguagens de script inativas, elas serão mais úteis para o seu nível de Linux (4) PHP / Ruby, MySQL e HTML - Apenas comece sua programação na Web! Você entenderá todo o processo de interação servidor-cliente, outro nível de computação.

Precisa de conceitos úteis? AI, redes neurais. Estes devem arredondá-lo para fora.

Você pode escolher um deles para fazer ou tocar em todos eles. Minha língua? Todos eles, conforme necessário, mas estou programando desde 1984, e tenho um diploma em CS, jogos escritos e todos os tipos de aplicativos de sistemas embarcados. É o que eu faço. Você precisa descobrir quem você é e o que você faz. Apenas verifique se você está se divertindo.

Apreciar!

Scott Foulk
fonte
0

opa, erro de segurança da informação para sistemas de informação ... bem, a maior parte disso ainda se aplica

Java

  1. Deve haver um curso de programação de nível básico, baseado em java, que conte para o seu diploma. É sempre bom obter créditos pelas coisas que você está aprendendo.
  2. Isso lhe dará algum crescimento na carreira se você ficar cansado de ser estritamente um cara de sistemas ... ou se a empresa em que trabalha mais tarde decidir que os sistemas são como torradeiras e as pessoas que os administram.
  3. Orientado a Objeto
  4. Você disse que queria fazer algum desenvolvimento para Android. Isso vai significar Java.

Honestamente, se você estiver trabalhando no Linux e fizer um curso de programação inicial em Java, e talvez seguir mais alguns cursos de programação, as outras ferramentas como Bash sed / awk, etc ... devem se encaixar. Se você realmente entrar nos sistemas, poderá pegar C mais tarde, mas eu não diria que é uma grande demanda e nem diria que é um requisito ser um cara de sistemas - a menos que você realmente goste de sistemas internos.

YMMV

MLH
fonte