Perché è sempre "quale lingua dovrei imparare dopo" anziché "quale progetto dovrei affrontare dopo"? [chiuso]


14

Perché i programmatori principianti (come me) chiedono sempre la lingua successiva che dovrebbero imparare invece di chiedere il prossimo progetto da affrontare?

Perché Eric Raymond, nella sezione " Impara a programmare " del suo saggio " Come diventare un hacker ", ha parlato dell'ordine in cui dovresti imparare le lingue (rispetto all'ordine in cui dovresti affrontare i progetti).

I carpentieri principianti chiedono "So come usare un martello ... dovrei imparare a usare una sega o un livello successivo?"

Lo chiedo perché sto scoprendo che quasi tutti i progetti significativi che mi interessano affrontare (ad esempio un'app Web, una serie di strumenti di analisi del poker) richiedono che impari abbastanza di una moltitudine di lingue (Python, C, HTML, CSS , Javascript, SQL) e framework / librerie (wxPython, tkinter, Django) per implementarli.

Grazie,

Mike


5
Sembra un po '... ranty, a dire il vero. Forse potresti rimuovere le insinuazioni e lasciare solo la tua domanda?
Anon.

4
Penso che tu stia scartando i passi cronologicamente. Le probabilità sono che il falegname sappia già come usare quegli strumenti, se sa come incorniciare una porta. Ma all'inizio della sua vita, anche lui ha seguito il percorso di quale strumento dovrei investigare dopo.
CrazyPenguin,

Bel commento re: ranty ... stava per intrattenere. Ci scusiamo se è sembrato sfacciato.
MikeRand,

4
Il confronto tra linguaggio di programmazione e utensili manuali non è un ottimo confronto. Sembra avere un senso superficialmente, ma cade rapidamente e finisce per essere più dannoso che utile. Inoltre, troppe persone lo trattano come se fosse una verità indiscussa. Questo ragazzo fa un lavoro decente delineando alcuni motivi per cui non funziona. journal.dedasys.com/2007/12/12/…
Nick Knowlson

Mi piace questa domanda ...!
Michael K,

Risposte:


6

Penso che quando la maggior parte delle persone decide di imparare una lingua, lo fanno perché vogliono affrontare un progetto scritto in quella lingua, ora o in futuro. Per farlo, devono imparare quella lingua, che richiede tempo. I linguaggi di programmazione sono come strumenti, ma mentre puoi imparare a usare un martello in circa sessanta secondi, le lingue impiegano un po 'più di tempo per imparare a usare; così molte persone si concentrano sull'apprendimento di una lingua prima di concentrarsi sul lavoro su un progetto scritto in quella lingua.

In un'altra nota, penso che quando la maggior parte delle persone chiedono che lingua per imparare prossimo, in realtà stanno pensando di quale progetto per imparare prossimo, ma si concentrano su l'apprendimento della lingua prima.

Infine, l'apprendimento delle lingue può essere divertente , anche se non hai in mente un progetto o un obiettivo specifico.


6
  • Il motivo di molti sviluppatori a tempo pieno è quello di essere più impiegabili.

  • Essere più impiegabili di solito significa superare l'ostacolo dello screener delle risorse umane (e successivamente superare l'ostacolo dell'intervista effettiva).

  • Il tipico screener HR ha di solito una lista di controllo delle lingue che può essere confrontata con un curriculum, ma non ha modo di valutare competenze o progetti.

  • Il successo in un'intervista vera e propria di solito dipende più dalla fortuna e dalle competenze minime in una lingua che dall'esperienza e da una profonda comprensione di una lingua.

Quindi, essere mediocri in molte lingue è meglio per l'occupabilità che essere un esperto in poche, a meno che non si faccia domanda per posizioni senior.


Purtroppo per superare la schermata delle risorse umane è necessario fornire l'elenco delle parole d'ordine del giorno. Il processo di screening delle risorse umane è piuttosto un filtro di rotta che lascerà indietro molti candidati qualificati.
Jeff,

1
@Jeff, da quello che ho sentito dello screening delle risorse umane, tutto ciò che vogliono è ridurre il numero di curriculum a un livello gestibile e applicano molti filtri arbitrari, come "bin se più di 2 pagine".
Dominique McDonnell,

2

Le analoghe scelte di programmazione per il carpentiere ci sarebbero "Quale applicazione dovrei costruire dopo?" o "Quale sistema dovrei costruire dopo?" che sono piuttosto validi e separati da un progetto che può davvero essere applicato quasi universalmente. Potrei avere un progetto per cambiare la mia dieta o perdere 20 libbre con la stessa facilità con cui potrei avere qualcosa che richiede la scrittura di un nuovo software per legare le cose.

Per rispondere alla domanda, credo che l'idea sia che una lingua rappresenti uno strumento nella cassetta degli attrezzi di quella persona che può essere utile su un curriculum. Alcune persone possono scegliere di diventare un programmatore per pagare le bollette e, in tal caso, potrebbero chiedere quale strumento successivo dovrebbero aggiungere quale sarebbe spesso una lingua, ma ci sono altre possibilità come imparare a implementare, controllo del codice sorgente, test e metodologie di sviluppo per nominare alcune altre aree. Se un falegname dovesse rivelare quali strumenti aveva, allora potrebbe avere una prospettiva simile, direi. Tuttavia, esiste un insieme generale di strumenti che si presume che la maggior parte dei falegnami abbia o abbia accesso per ottenere se richiesto abbastanza rapidamente. Hai mai visto quanti diversi tipi di seghe e martelli ci sono là fuori che le persone possono usare?


1

Forse si tratta in parte della mentalità degli hacker, almeno per alcuni programmatori. L'hacker è definito nel file Jargon come

"Una persona a cui piace esplorare i dettagli dei sistemi programmabili e come ampliare le proprie capacità, rispetto alla maggior parte degli utenti, che preferisce imparare solo il minimo necessario."

Quindi, per l'anima di un hacker, si tratta più di imparare e "armeggiare" con il processo, i concetti, gli strumenti e sì, le lingue per creare qualcosa, che il prodotto finale stesso. Maggiori informazioni sul processo stesso.

È una costante lotta per le prossime novità e / o sfide. Il progetto finito perde rapidamente quell'attrattiva. A volte (la maggior parte delle volte?) Le maggiori sfide creative o tecniche vengono vinte prima del completamento del progetto. Molti progetti vengono abbandonati, quando una mente affamata di nuove sfide mentali avanza.

Soprattutto gli hacker sono interessati a nuovi punti di vista, concetti, astrazioni e modi di pensare, tipo di hacking mentale:

"Un linguaggio che non influisce sul modo in cui pensi alla programmazione, non vale la pena conoscerlo." - Alan Perlis


0

Al giorno d'oggi ci sono una varietà di linguaggi schifosi di uso comune: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic, ecc. I programmatori compensano l'inerzia intrinseca di questi linguaggi imparando e mescolando molti di essi insieme.

C'è una piccola comunità conosciuta come la comunità Lisp che è libera dalla follia che pervade l'informatica moderna.

Poiché Lisp è un linguaggio di programmazione programmabile, puoi esprimere tutte le tue idee al suo interno senza mai doverti allontanare da altre lingue o altri formati di dati come XML. Lisp può essere applicato ovunque, anche a livello hardware come abbiamo visto con le macchine Lisp .


Devi conoscere quante più lingue possibili per codificare efficientemente Lisp. Altrimenti finirai per reinventare la ruota invece di rubare semplicemente concetti e idee appropriati dalle altre lingue e implementarli su Lisp.
Logica SK

Concordi con il tuo sentimento riguardo al potere di Lisp, ma non sono d'accordo sul fatto che non sia utile imparare altre lingue: la maggior parte dei trucchi che uso in Lisp sfruttano attivamente ciò che ho imparato da altre lingue (sia come schemi che anti-schemi ...)
Mikera

0

Perché imparare un nuovo linguaggio di programmazione è un investimento enorme e a nessuno piace fare un cattivo investimento.
L'apprendimento di un nuovo linguaggio di programmazione non riguarda la memorizzazione di come scrivere costrutti di loop, dichiarare classi, importare un altro modulo ...
Devi sapere come scrivere un codice idiomatico in quel linguaggio e questo processo richiede davvero molto tempo e dedizione .
Il tempo è una risorsa limitata, lo sforzo è una risorsa limitata ma la distrazione, lo stress quotidiano, le bollette e i giochi sportivi della domenica sono sempre lì e devono convivere.
I programmatori vogliono investire saggiamente.

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.