Quale lingua per iniziare su Linux? [chiuso]


19

Sto per iniziare un diploma di sicurezza delle informazioni di 4 anni a Purdue. Il corso di laurea non prevede alcun corso di programmazione. Quindi l'unica volta che sarò in grado di prenderne uno è l'elettiva occasionale. Quindi la maggior parte del mio apprendimento sarà per conto mio. All'inizio del mio ultimo anno di liceo ho deciso di passare completamente a Linux. Finora ho imparato alcune cose su Linux e sicurezza. Tuttavia, credo anche che sarà importante per me imparare anche alcuni linguaggi di programmazione.

Fondamentalmente sto pensando di imparare a programmare fianco a fianco con l'apprendimento di come usare Vim. Quindi molto probabilmente sarà un processo lento. Alla fine penso che ne varrà la pena, comunque. Come ho detto, vado nella sicurezza, quindi creerò principalmente applicazioni relative alla sicurezza, la maggior parte delle quali saranno legate alla rete. Vorrei anche iniziare a sviluppare applicazioni Android, ma che sarà più avanti.

Detto questo, ho alcune idee. Stavo pensando di iniziare con JavaScript, perché è multipiattaforma, e l'ho visto suggerito in precedenza. Ho anche sentito molto parlare di Ruby o potrei seguire la naturale rotta Linux con C. In quale direzione dovrei andare?

Risposte:


53

Innanzitutto: bashinsieme alle comuni utility da riga di comando. Bashè l'interfaccia utente predefinita per il sistema operativo e molti programmi su un sistema Linux saranno racchiusi in uno script shell a un certo livello. Può essere bizzarro, ha alcune idiosincrasie e spesso sembra decisamente stupido, ma è qualcosa che dovrai affrontare, quindi mettiti comodo con esso. Gli strumenti standard come grep, diff, head, tail, sort, uniq, e così via, sarà molto utile non solo con scripting di shell, ma con la vostra produttività sulla riga di comando.

Impara almeno alcuni c. È ciò in cui sono scritti i livelli più bassi del sistema e ti darà una migliore comprensione del sistema nel suo insieme.

Scegli una lingua di livello superiore che ti piace. Python, ruby, perl, java, Qualunque sia - a patto che vi piaccia. È qui che inizi davvero a imparare come "programmare", e da qui in poi sarà più facile imparare più lingue e continuare a imparare .


2
Sono d'accordo con tutti i punti elencati qui.
Joe,

6
Se hai intenzione di imparare bash, dovresti includere informazioni su awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq, ecc., Ecc., Ecc.
jftuga,

2
@jftuga Concordato. Un'enorme percentuale del mio toolkit è la capacità di fare "estrazione e integrazione dei dati" - un modo elegante di dire "manipolare file di testo formattati". Una volta che hai capito la pipeline e hai imparato a conoscere gli strumenti comuni, sei libero dal flusso di lavoro di qualsiasi software pre-roll. Sono anche un grande fan di MS Powershell, che si trova sulle spalle di Bash per molti aspetti.
AndyN,

@jftuga - notato. Anche se penso che siano importanti, non penso che qualcuno che è nuovo su Linux debba preoccuparsi di apprendere in profondità le grandi pistole come sed / awk, ma dovrebbero avere abbastanza comprensione per essere in grado di decifrare il codice esistente se dovessero incontrarlo .
JimB,

8
Concordo con tutti, ma consiglierei Python sugli altri come un linguaggio di alto livello in particolare perché è diventato il linguaggio di livello superiore più comune per gli strumenti di gestione del server. Ti imbatterai molto più spesso di rubino o java. Perl è anche comune perché è così vecchio, quindi sceglierei quello successivo.
tylerl,

10

Scoprirai che tutti raccomanderanno praticamente la loro lingua preferita. La mia lingua preferita è il Perl, quindi è quello che raccomando. :) Tuttavia, al di là delle mie preferenze personali, ci sono alcuni ottimi motivi per cui dovresti prendere in considerazione l'uso di perl:

Innanzitutto, il perl è un linguaggio meraviglioso per tutti gli usi. È facile iniziare in perl scrivendo semplici script per fare le stesse cose che fai negli script di shell, come manipolare i file e prendere decisioni in base all'input dell'utente. Ciò fornisce un'introduzione molto semplice e graduale alle idee generali di programmazione. Perl è in circolazione da un po 'di tempo, quindi ci sono molte risorse (libri e siti Web) per iniziare.

Secondo, perl è un linguaggio incredibilmente potente ed espressivo che supporta tutte le moderne funzionalità di programmazione. Lo uso da oltre quindici anni e sto ancora imparando nuovi modi per fare le cose in modo più efficiente. Ad esempio, se vuoi esplorare la programmazione orientata agli oggetti, perl ha questo (in particolare tramite Moose ).

In terzo luogo, perl arriva con la potenza e la flessibilità quasi infinite del suo repository aggiuntivo ufficiale, CPAN . Ad esempio, per seguire l'idea di scrivere un software di sicurezza, supponiamo che tu voglia sviluppare una sorta di scanner di sicurezza di rete personalizzato. Invece di scrivere tutto ciò da solo, potresti iniziare a utilizzare NMAP :: Scanner come motore di scansione e quindi scrivere le tue modifiche e miglioramenti.

Infine, se vuoi esplorare la programmazione web, anche Perl ha questo. Un modo moderno popolare per scrivere software Web in Perl è Catalyst , che fornisce un moderno framework Web MVC per sviluppare rapidamente qualsiasi tipo di app Web.

Mettendo insieme tutto ciò, il vantaggio di perl è che ti consente di iniziare a scrivere piccoli script e programmi da riga di comando, e gradualmente crescere fino a scrivere applicazioni moderne e complete. Naturalmente, il prezzo di questa flessibilità è la complessità. Sta a te studiare e imparare a fare le cose nel modo giusto, perl non applica le buone pratiche come fanno le altre lingue. Personalmente mi piace questa libertà, specialmente unita a tutte le grandi risorse disponibili sul web per imparare ad usare il perl.


Perl è un linguaggio di scripting (principalmente); e la maggior parte del sistema operativo è programmato in C.
Chris S

Certo, ma non credo che contenga molto nel contesto di questa domanda. Non sembra che l'OP voglia davvero o debba conoscere la programmazione a livello di sistema operativo.
Phil Hollenback,

Suggerirei che Perl è un buon modo per scrivere codice per un'app di sicurezza che ha come target qualcosa di scritto in un'altra lingua (spesso C) che hai già capito. Pertanto, se questa distinzione ha senso, classificherei Perl come uno strumento che dovresti imparare a usare, piuttosto che una lingua che dovresti imparare (completamente) a capire.
BMDan,

6

Tre lingue ti terranno bene. In ordine decrescente di importanza (ovvero il primo è il più importante):

  1. Pseudocodice . Spesso l'implementazione con cui stai lavorando sarà una fusione di una mezza dozzina di lingue e strumenti, solo alcuni dei quali lo saprai direttamente. Se sai quale modello viene implementato, tuttavia, puoi capire quale input viene consegnato a un pezzo e quale output dovrebbe dare, testarlo in esclusione e capire se è il pezzo che si sta rompendo.
  2. C . Nel bene e nel male, è ciò che gestisce l'universo (Linux) e ti dà una visione abbastanza vicina al terreno delle cose che puoi capire cosa sta facendo uno dei linguaggi di livello superiore (ad esempio PHP pass-by-reference o modello di thread di Java).
  3. Quasi tutto il resto tranne C ++ . Un linguaggio funzionale come SQL o, meglio ancora, Haskell, o qualcosa di non tanto simile a C-ey - se tutto il resto fallisce, Java può funzionare per questo, ma è ancora molto procedurale - ottenere voti alti qui; l'idea è di avvolgere il cervello attorno a qualcosa di sufficientemente completamente diverso da quello che hai fatto prima che non puoi fare a meno di realizzare i limiti di ciò che hai fatto prima. In termini di pura utilità, probabilmente bash appartiene anche a questo elenco, ma se non hai una base in qualcos'altro, finirai per scrivere C con sintassi bash invece di esplorarne davvero il potere.

1
+1 per pseudocodice. Mi piace fare lo pseudocodice nei commenti e poi
scrivere

2
+1 per pseudocodice e "Nient'altro tranne C ++". Nel mondo Linux, dovresti imparare almeno uno script language, come pythono PHP.
yegle

2
Non so se lo pseudocodice sia una buona raccomandazione per un principiante. Lo pseudocodice sarà comprensibile dopo aver appreso la maggior parte di qualsiasi linguaggio in stile c, quindi si dovrebbe davvero impegnarsi nell'apprendimento dello stesso pseudocodice? Per non parlare, non esiste una singola sintassi pseudocodice, che probabilmente confonderà un principiante.
JimB,

@JimB: il punto è imparare a pensare in modo logico, indipendentemente dalla lingua. ERD, UML e simili sono gli strumenti della torre d'avorio per farlo, ma non devi imparare nulla di così formale. L'idea è di imparare a tracciare i tuoi pensieri e poi confrontarli con il risultato atteso. Quando ti rendi conto che, ad esempio, il database non ha modo (intrinseco) di sapere quali intestazioni HTTP sono state inviate come parte della richiesta al server Web, puoi eliminare una variabile dalla considerazione. Allo stesso modo, quando si scrive pseudocodice per una funzione, si individuano spesso casi limite e angolari che altrimenti non si farebbe.
BMDan,

Sono completamente d'accordo, penso solo che indicare un principiante a "pseudocodice" causerà confusione, dal momento che non è una cosa formale. Lo pseudocodice della maggior parte delle persone sarà una fusione dei linguaggi c-style in cui si trovano più a loro agio, oltre ad alcune sintassi ad hoc.
JimB,

4

Dovresti imparare diverse lingue. Vorrei suggerire di iniziare con Python. È ampiamente raccomandato per essere facile da imparare e per essere molto utile, molti eccellenti materiali di studio autonomo sono disponibili gratuitamente e, credo, siano ampiamente utilizzati dai professionisti della sicurezza IT. Quasi ogni volta che vedo i professionisti della sicurezza pubblicare un codice dimostrativo, è Python.


+1 per Python e Python non è popolare solo nel mondo Linux.
xiao,

4

Sto per iniziare un diploma di sicurezza delle informazioni di 4 anni a Purdue. Il corso di laurea non prevede alcun corso di programmazione.

Sono l'unico a pensare OMG !!!! a questo punto?

Credo anche che sarà importante per me imparare anche alcuni linguaggi di programmazione

Direi di si. Sebbene non ti aspetti davvero di diventare un programmatore competente, probabilmente avrai bisogno delle competenze necessarie per simulare / ricreare gli attacchi e capire come funziona il processo di programmazione. Avrai anche bisogno delle competenze per analizzare i dati ed estrarre informazioni da fonti in blocco (come i registri). JimB ha menzionato bash - e mentre senza dubbio lo userete - ci vogliono solo un paio d'ore per imparare i pezzi essenziali. In realtà l'unico posto in cui potresti mai vedere bash è sui sistemi Linux, ma le altre shell sono molto simili.

Consiglierei di imparare awk e / o Perl per lo scricchiolio dei dati. Non preoccuparti di alcun requisito per spuntare una casella orientata agli oggetti, ma consiglierei di guardare anche lingue non procedurali.

Imparare C ti esporrà anche a molte informazioni su come il codice si trasforma in un programma eseguibile (la compilazione è solo un passo in un processo molto complesso).

La scelta ovvia per qualcuno interessato allo sviluppo di Android / mobile sarebbe java - ma java si sforza molto di isolare lo sviluppatore dal dover affrontare le realtà del funzionamento e dei protocolli - è la mia esperienza che questo è dove si ottengono problemi di sicurezza con Java Apps. vale a dire che potrebbe aiutarti a raggiungere il tuo obiettivo finale, e sarà bello sul tuo CV ma non aspettarti che l'apprendimento di Java integri molto le tue conoscenze sulla sicurezza.


1
Non sei il solo. Eeeek !!!
Keith il

2

Il mio consiglio:

  • bash(e simili) non sono linguaggi di programmazione generici. Mentre è possibile realizzare alcuni script sofisticati bashnon è il modo migliore per imparare la programmazione in generale. È il modo più naturale per eseguire attività di amministrazione dei sistemi che ruotano principalmente attorno all'esecuzione di altri programmi, alla gestione dei loro file e directory di dati e al marshalling di input e output da e verso di essi. Se bashè un martello, riservalo per problemi che sembrano davvero unghie. Imparare a fare qualcosa di non banale bashsarà considerevolmente più semplice se imparerai alcuni sottoinsiemi molto piccoli di sede awk(poiché la manipolazione delle stringhe in bashè in gran parte ispirata dalla sintassi di operazioni simili in questi "piccoli" linguaggi).
  • Per la programmazione generale sotto Linux ascolterai molti argomenti appassionati. I due migliori contendenti sono Perl e Python . Questi sono entrambi linguaggi di scripting di livello molto alto che sono di uso generale, che espongono una funzionalità di basso livello sufficiente per eseguire quasi tutte le operazioni accessibili a qualsiasi processo di spazio utente sul sistema e con enormi raccolte di moduli e librerie pre-scritte disponibili.

Io vi consiglio di leggere un testo introduttivo sul C e trascorrere del tempo in esecuzione il stracee ltracecomandi su alcuni semplici comandi di utilità come lse mkdire /bin/echocosì via (in realtà in questi giorni io suggerirei ltrace -Sal posto di strace, ma incursioni nel output di entrambi i comandi e in l' ltraceoutput come aumentato -Sdall'opzione sarà estremamente educativo).

C è il linguaggio di programmazione principale in cui sono scritti il ​​kernel Linux e la libc GNU. (Le piccole parti sono in assemblaggio). Quasi tutti i programmi su un sistema Linux (o altro tipo UNIX) sono collegati alle librerie C (libc). Anche gli interpreti Perl e Python primari (e la maggior parte degli altri linguaggi di scripting) sono scritti in C. Questi programmi (il kernel, le librerie di sistema comuni e i vari interpreti del linguaggio di scripting) sono tutti scritti da programmatori C poiché il loro design e le caratteristiche sono fortemente influenzati dalle loro implementazioni sottostanti. Quindi una comprensione più profonda di uno qualsiasi di questi implica la comprensione di C. Non è necessario conoscere nulla di C ++ o Java per comprendere la programmazione a questo livello. (Ciascuno di essi può essere interessante e necessario a sé stante a seconda della patch di carriera,

Quindi, se sei d'accordo con le mie premesse finora, lo abbiamo ridotto a una scelta tra Perl e Python.

Ecco dove iniziano le vere guerre di fiamma.

Il mio consiglio è di concentrarsi prima su Python (2.x). Python ha una sintassi relativamente semplice e coerente. Puoi imparare le basi della sintassi di Python in poche ore e questa è la stragrande maggioranza della sintassi che incontrerai mai. Ci sono solo alcune caratteristiche (comprensione dell'elenco, espressioni del generatore, decoratori) che sono rughe della sintassi di base. Quindi la maggior parte dei tuoi sforzi nell'apprendimento di Python sarà dedicata all'apprendimento delle ampie librerie standard e alla ricerca del modo "migliore" per usarle (e capire quali sono le serie specifiche di eccezioni che vale la pena gestire per rendere i tuoi programmi robusti) e, soprattutto, nell'apprendimento dei concetti sottostanti.

Penso che le ampie librerie di Python e la sintassi relativamente semplice presentino due distinti svantaggi.

In primo luogo, mentre impari come fare a un livello molto alto in Python potresti trovare noioso il pensiero di dover lavorare a un livello inferiore. Dove lavoro Perl è lo standard. Ho prototipato il mio lavoro in Python, dove so che posso farlo funzionare in modo molto più rapido e affidabile rispetto a Perl; poi temo di dover passare e portarlo in Perl per i miei colleghi. (Ero abbastanza bravo in Perl anni prima di usare Python --- quindi non è una questione di semplice familiarità).

L'altro svantaggio è che a volte è difficile trovare il modo più alto livello per eseguire un determinato compito in Python. Ad esempio per recuperare una pagina Web potresti inizialmente provare a farlo con socket di basso livello ... che funzionerà. Tuttavia, dovresti duplicare un bel po 'di codice che puoi già trovare, incluso nei moduli urllibe / o urllib2. Il fatto stesso che le librerie standard, a partire dalla 2.7.1, includano entrambe queste affermazioni, sottolinea. Ove possibile, i manutentori di Python hanno esteso moduli e API precedenti in modo trasparente; tuttavia ci sono dozzine di casi in cui Python conserva due o tre moduli in cui l'estensione trasparente non è stata possibile per qualche motivo. (Per un altro esempio si potrebbe guardare le opzioni per il parsing opzioni della riga di comando: argparse, optparse, egetopt. C'è poco danno nello scrivere i tuoi programmi usando getopt(il più vecchio di questi). Per utility molto semplici con poche opzioni e una rigida convenzione di chiamata (utilizzata solo da un piccolo gruppo di persone, ad esempio), non c'è nulla di intrinsecamente sbagliato nel camminare su di sys.argvte. Tuttavia, di solito vale la pena leggere attentamente i documenti e seguire i collegamenti in fondo ai moduli di livello precedente o inferiore che descrivono le funzionalità di livello più recente o superiore disponibili.

Il mio consiglio si basa sulla mia opinione che si desidera concentrarsi su concetti più profondi e non dover dedicare gran parte del proprio tempo e sforzo a questioni sintattiche e specifiche della lingua. Capire quando usare un sottoprocesso, rispetto a un thread o le funzionalità multi-elaborazione incluse in Python ha relativamente poco a che fare con il linguaggio e tutto ciò che riguarda la competenza di programmazione indipendentemente dal linguaggio. (Nel punto in cui puoi capire gli argomenti sul modello guidato dagli eventi di Twisted rispetto al threading e al multiprocessing, allora avrai probabilmente imparato Python e sarai pronto per programmare in qualsiasi lingua).

L'argomento contrario, per Perl, è semplice e pratico. Ci sono molti altri lavori là fuori che richiederanno, in particolare, competenze con Perl. Perl è un linguaggio potente e ha librerie estremamente estese. (Il nucleo di Perl distribuito con la maggior parte dei sistemi Linux copre una gamma più piccola di funzionalità rispetto alle librerie Python standard; si presume che tu abbia installato un numero significativo di pacchetti aggiuntivi dalla tua distribuzione o tramite CPAN --- l'archivio completo Perl Rete). (Al contrario, ci sono meno moduli e pacchetti Python che devo recuperare separatamente ... quelli sono disponibili da PyPI --- l'indice dei pacchetti Python).

Quindi, se impari il Perl, avrai un vantaggio per trovare lavoro, in particolare lavori di amministratore di sistema, a breve termine. Tuttavia, la sintassi di Perl è ... beh ... nelle parole di alcuni dei suoi stessi appassionati ... "patologicamente eclettico!" Perl può essere estremamente conciso e il suo codice è pieno di punteggiatura. Coloro che lo adorano discuteranno all'infinito che è "facile" e ha perfettamente senso --- e avranno infinite opportunità di farlo in forum pieni di confusione su come è stato interpretato un determinato frammento di codice. La sintassi e la lingua utilizzate nella documentazione e da coloro che la supportano nei forum pubblici sono sfumate al punto da poter dedicare considerevoli sforzi per apprenderle.

Ora, ti preghiamo di realizzare che questo precedente commento è soggettivo e parziale. È possibile che proverai Perl e scoprirai che la sintassi è intuitiva e piacevole. Se è così, più potere per te. Tuttavia, personalmente trovo che la mia comprensione delle idiosincrasie di Perl decade molto rapidamente. I fondamenti che mantengo, ma trovo che sia una lotta ogni volta che devo tornare ad esso per più di poche righe di codice.

Ci sono molte altre lingue che studieresti, Java, Lisp e Scheme, TCL, Scala e così via. Tuttavia, suggerirei di iniziare con uno che offre il miglior equilibrio tra utilità e semplicità.


1

Nel mondo Linux, dovresti sapere due cose di base:

  1. Regular Expression. Questo è un must. RegExè un "linguaggio" universale, una volta che sai come usare l'espressione regolare, la tua vita sarà molto più semplice :-)
  2. " quick & dirty" è molto comune nel mondo Linux. Se puoi fare il tuo lavoro, non importa quanto brutta sia la tua soluzione, hai fatto il tuo lavoro.

Quindi, se si vuole imparare una lingua su Linux, è NECESSARIO scegliere un script language, come python, PHPo addirittura bash scripting.

E, il mio consiglio è PHP. È semplice e brutto. Ha un manuale online dettagliato . Ha un buon RegExsupporto. È tutto.


2
Questa deve essere la migliore descrizione di PHP che io abbia mai sentito ... Quando si toglie la popolarità non è rimasto molto dietro: P
Gordon Gustafson,

Un po 'fuori tema, ma penso che il motivo principale della popolarità di PHP sia che molte delle funzioni che sarebbero sparse in molte librerie / pacchetti linker in altre lingue sono standard in PHP (un po' come raggruppare la maggior parte delle cose di cui avrai mai bisogno libc)
Phil Lello,

1

Puoi svolgere quasi tutte le attività in quasi tutte le lingue, quindi la scelta giusta è in gran parte dettata dal problema che stai risolvendo.

Vale sicuramente la pena conoscere le lingue delle seguenti categorie:

  • Linguaggi compilati (come C / C ++ / Java). C / C ++ è un buon posto per esplorare problemi di sicurezza con buffer overflow, corruzione dello stack, ecc.
  • Lingue interpretate (come PHP). Un buon posto per esplorare i problemi con variabili tipicamente vaghe e non rilevare funzioni indefinite finché non le si chiama
  • Linguaggi di scripting (sh / bash / csh / ksh). Davvero utile per incollare insieme le molte utili utilità della shell (vedi / bin & / usr / bin)

Farei uno sforzo per imparare C / C ++, in quanto ciò consente il danneggiamento dello stack e l'accesso diretto alla memoria. Questo è importante se vuoi sperimentare problemi di sicurezza. Molte lingue hanno una sintassi simile al C (incluso JavaScript), quindi è un buon trampolino di lancio.

Se stai lavorando in una shell molto, il che immagino che tu sia mentre stai imparando VIM, finirai per imparare gli script di base della shell come effetto collaterale. UNIX Power Tools è stato un buon libro per imparare cose più avanzate; Non so se sia ancora pubblicato.

PHP può anche essere una buona lingua da imparare; il vantaggio principale che offre ai nuovi programmatori è che sono incorporate molte funzionalità, piuttosto che in una libreria a cui dovresti collegarti (che non è un'attività complessa). Per questo motivo, sfogliare i documenti principali ti insegnerà molte cose.


1

Innanzitutto, alcuni consigli negativi:

Fondamentalmente quello che sto pensando di fare è imparare a programmare fianco a fianco con l'apprendimento di come usare Vim.

Non farlo. Trova un editor che sia davvero comodo. Imparare sia la lingua che l'editor è tre volte più difficile dell'apprendimento in ordine (ovviamente l'editor dovrebbe andare per primo :-))

Come ho già detto, mi occuperò della sicurezza, quindi creerò principalmente app legate alla sicurezza. La maggior parte dei quali sarà collegata in rete.

App di sicurezza relative alla rete? C è una scelta semplice. Dovrai accedere alla rete a livello di API di sistema, il che significa che C è la strada da percorrere. Naturalmente questo non significa che tutto debba essere in C - una libreria C + un $favorite-high-level-languagewrapper potrebbe salvarti le seccature legate a C in parti che non hanno bisogno di C.

Detto questo, ho alcune idee. Stavo pensando di iniziare con JavaScript, perché è multipiattaforma, e l'ho visto suggerito in precedenza.

Scommetto che è stato suggerito in un contesto diverso dal tuo. JavaScript ha i suoi punti di forza ma non è un buon linguaggio per scopi generici, non ancora. JS non ha librerie standard paragonabili a quelle disponibili per C, Python, Perl, Ruby, Java e società.

A proposito $favorite-high-level-language, il mio consiglio è di andare con Python. Si interfaccia bene con C, viene fornito con molte librerie utili e ha molte più librerie disponibili come componenti aggiuntivi.


0

Nulla di sbagliato nell'apprendimento di Javascript ma funziona solo con un browser, quindi la tua programmazione sarà limitata alle app relative alle pagine web.

Probabilmente ci sono tante risposte a "cos'è un buon linguaggio di programmazione da cui iniziare" quante sono le lingue. Il mio valore di tuppence è che potresti fare di peggio che iniziare con gli script di shell di base, solo vedere cosa puoi fare per automatizzare le attività senza usare nulla oltre la shell, quindi estenderlo usando Perl, o un linguaggio simile che è nato dalla necessità di fare attività più complesse di quelle che la shell è in grado di svolgere, dopodiché, e se sei veramente interessato ci vorranno solo poche settimane, inizia a usare C o un derivato.


3
Solo sui browser? Non più .
EEAA,

Grazie, sono corretto, ma non consiglierei Javascript come ambiente di apprendimento, per un principiante, ottenere supporto per le versioni non browser sarebbe un incubo.
blankabout

2
Ho sempre pensato che ECMAScript sia il linguaggio di programmazione e Javascipt è in cima a ECMAScript per fornire utili funzioni per manipolare il DOM. Javascript è per il browser.
Jonathan Mayhak,

0

I miei consigli? Hmmm. Bene, potresti dover decidere mentre vai. Per la gamma sana e ben arrotondata, puoi seguire il solito percorso di laurea in CS, forse non in questo ordine.

(1) C / C ++ - Puoi eliminare le cose orientate agli oggetti e almeno ci avrai provato. Il C ++ è lo standard "professionale". (2) Assembly (solo per un po '- ti aiuterà a capire il vero funzionamento del processore, della memoria, ecc. - Non devi sposarlo.) (3) Python / Perl / Bash - Ottieni questi linguaggi di scripting giù, saranno molto utili per il tuo livello di Linux (4) PHP / Ruby, MySQL e HTML - Attiva la tua programmazione Web! Comprenderai l'intero processo di interazione server-client, un altro livello di elaborazione.

Hai bisogno di concetti utili? AI, reti neurali. Questi dovrebbero arrotondarti.

Puoi scegliere uno di questi da fare o toccarli tutti. Mio linguaggio? Tutti, se necessario, ma sto programmando dal 1984 e ho una laurea in CS, giochi scritti e tutti i tipi di app per sistemi integrati. È quello che faccio. Devi scoprire chi sei e cosa fai. Assicurati solo che ti stai divertendo.

Godere!


0

oops, fraintendimento della sicurezza delle informazioni per i sistemi di informazione ... vabbè la maggior parte di questo vale ancora

Giava

  1. Ci deve essere un corso di programmazione entry-level basato su Java che conterà per la tua laurea. Sempre bello ottenere crediti per le cose che stai imparando.
  2. Ti darà un po 'di crescita professionale se ti ammali di essere rigorosamente un ragazzo di sistema ... o se la società che lavori in seguito decide che i sistemi sono come tostapane e lo sono anche le persone che li gestiscono.
  3. Orientato agli oggetti
  4. Hai detto che volevi fare un po 'di sviluppo Android. Significa Java.

Onestamente, se lavori in Linux e segui un corso di programmazione iniziale in Java, e poi magari segui un altro paio di corsi di programmazione, gli altri strumenti come Bash sed / awk, ecc ... dovrebbero andare al loro posto. Se ti piacciono davvero i sistemi, potresti prendere un po 'di C in seguito, ma non direi che è molto richiesto e non direi nemmeno che è un requisito per essere un ragazzo di sistemi - a meno che tu non sia davvero interessato agli interni.

YMMV

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.