I programmatori dimenticano la sintassi


17

I bravi programmatori devono avere la sintassi sulla punta della lingua quando scrivono il codice? Cosa ne pensi di loro se cercano su Google cose semplici online? Sono buoni o cattivi (forse sanno dove cercare)? I programmatori dovrebbero avere una buona memoria? È questo un tratto per un buon programmatore?


1
A seconda di quanto "semplice". Alcuni esempi / sfondi sarebbero utili. Potrebbe anche essere un problema di incoerenza con il linguaggio / ambiente che stanno programmando.
rwong

1
Penserei che sarebbe parte della definizione di un buon programmatore, poiché rientra in un veloce ed efficiente. Se non riesci a scrivere una riga di codice con una consulenza come riferimento, non otterrai nulla in modo tempestivo. D'altra parte, questa non è una chiamata per memorizzare le cose.
Stonemetal

In C ++, di solito devo cercare la sintassi per il puntatore a funzioni (membro o no) poiché non lo uso così spesso ... forse che a volte la sintassi è semplicemente strana ?
Matthieu M.

Risposte:


25

La mia filosofia sulla programmazione è che è uno "stato d'animo" e il resto è "solo sintassi". (cioè non (come) importante)

Detto questo, non si dovrebbe cercare le cose semplici. Almeno, non per le lingue con cui lavori regolarmente. Non c'è niente di sbagliato nel bisogno di rinfrescanti e sapere come trovare informazioni è sicuramente una buona abilità da avere. Tuttavia, la sintassi principale dovrebbe essere sicuramente ben nota. Altrimenti, trascorri troppo tempo a cercare e troppo poco a programmare.


8
Esattamente, come una lingua parlata: devi saperlo parlare, ma i dizionari sono di grande aiuto. Spesso sai cosa vuoi esprimere prima di avere il vocabolario!
Kevin Cantu,

@Kevin - Esatto - ma puoi anche giudicare la fluidità di qualcuno in base alla frequenza con cui farebbero tali riferimenti. La maggior parte di noi li usava di tanto in tanto, ma mettevi in ​​dubbio qualcuno che diceva di poter parlare una lingua ma sentiva il bisogno di fare continuamente riferimento a un dizionario.
Jon Hopkins,

@jon Precisely. Continuando la metafora della lingua parlata / scritta, con un certo sforzo possiamo aumentare la nostra esposizione alla lingua e migliorare il nostro vocabolario. Da qui il mio vorace appetito per la lettura e la continua ricerca di una buona applicazione per flash card per iPhone. Analogamente per i linguaggi di programmazione, quando ho problemi con un particolare linguaggio creo uno snippet che lo dimostra e lo tengo a portata di mano per un facile riferimento. E, naturalmente, desidero rivedere occasionalmente tali aree problematiche. Ci è voluto del tempo, ma alla fine ho memorizzato la fastidiosa dichiarazione dell'interruttore in questo modo.
George Marian,

Penso che anche uno sviluppatore più "avanzato" probabilmente avrà più lingue alle spalle e talvolta le confonderà. Confondo ancora la dichiarazione di un array multidimensionale tra C # e C ++ di tanto in tanto (era "arr [] [] o arr [,]") e devo cercarlo.
Steven Evers,

28

Dipende da cosa intendi, ma la risposta breve è sì.

I programmatori dimenticheranno un punto e virgola o un tutore qua e là? Sicuro. Stanno andando a cercare la sintassi di un'istruzione switch perché probabilmente la usano raramente? Beh, lo faccio. Lavorerò con ActionScript ma lo scriverò come Java invece? Decisamente. Può volerci un po 'di tempo per abituarsi a digitare una nuova lingua, soprattutto se hai lavorato con una lingua diversa per anni.

La vera preoccupazione dovrebbe essere se un programmatore non è in grado di stabilire la testa o la coda della sintassi anche se un IDE li aiuta. Se la persona non sa a cosa serva un punto e virgola, o cosa siano quelle parentesi graffe ricci, allora ha più studio da fare.


8
Heh, anche l'esatta sintassi dell'istruzione switch mi dà dolore.
George Marian,

Questo è lo stesso motivo per cui mi attengo allo scripting Python, anche quando preferisco Ruby. Devo scrivere il codice in Python al lavoro, e avanti e indietro sarebbe troppo confuso.
LennyProgrammers,

+1 per la sintassi
dell'istruzione

5
Per non parlare della miriade di lingue che si conoscono e la sintassi a volte può fondersi insieme.
Josaph,

@dave Penso che il problema sia il mix di simboli. Di solito switch, è seguito da qualcosa tra parentesi, quindi una parentesi quadra aperta, quindi casecon un'etichetta che non è tra parentesi, quindi due punti, quindi le affermazioni tipicamente sono contrassegnate da punti e virgola. E, non dimentichiamoci, le breakdichiarazioni. È stato attraverso lo sforzo e la pura forza di volontà che alla fine l'ho memorizzato e devo ancora ricontrollare di tanto in tanto; giusto per essere sicuri.
George Marian,

10

Sarei sicuramente sorpreso se un programmatore altrimenti bravo dovesse cercare sistematicamente la sintassi per una lingua in cui parlava fluentemente. Naturalmente ci potrebbero essere casi angolari che in realtà non vengono utilizzati molto in pratica in modo che sia perfettamente accettabile per un buon programmatore di non conoscerli ma, come regola generale, un programmatore fluente non deve cercare la sintassi. Deve cercare funzioni e classi dalle librerie :)


+1. Mi considero fluente in C ++ e cerco quotidianamente nomi e argomenti di funzioni . Non memorizzerò mai ogni membro di std::string, per esempio.
Kristo,

8

Se ti trovi in ​​una posizione in cui cambi lingue regolarmente o lavori in 3 o 4 lingue contemporaneamente, non puoi fare molto al riguardo. Per un po 'ho finito per lavorare su progetti che richiedevano un cambio costante e ho iniziato a riferirmi come "programmatore di riferimento", dovendo cercare cose molto più di quanto avrei preferito.


4
+1 Completamente d'accordo. I programmatori che saltano tra le lingue a una velocità di nodi (posso avere 10 o più lingue in movimento in un giorno che abbraccia molti progetti) finiscono per avere difficoltà a ricordare le oscure differenze tra lingue simili, in particolare nelle funzioni standard della libreria. Questo peggiora man mano che invecchi, ho notato.
Orbling

Questo è il mio problema, ci stiamo muovendo in così tante cose al lavoro che a volte non ricordo nemmeno le basi. Soprattutto perché di solito posso semplicemente usare il contesto, qualcuno ha scritto un ciclo for o una funzione nelle vicinanze, copio solo quella sintassi. Ultimamente mi sono costretto a imparare la sintassi, ma contare sulla pratica per farmi memorizzare non è abbastanza. Ho scelto una lingua (Javascript) per macinare la sintassi nel mio cervello. Sta aiutando molto, specialmente con la pratica delle interviste alla lavagna.
Jemmeh,

5

Ho scritto C ++ per> 15 anni, ma ancora non conosco a memoria alcuni dei suoi arcani angoli sintattici.
Come si crea di nuovo un'istanza esplicita di un modello di funzione? E qual è la sintassi per specializzare parzialmente un modello che ha un argomento template-template? E non mi permetta di iniziare a dichiarare una funzione che restituisce un puntatore a una matrice di puntatori a funzioni che portano array di puntatori a ...

Sospetto che ci siano al massimo una o due dozzine di persone in questo mondo (se ce ne sono affatto) che conoscono davvero tutta la sintassi del C ++ a memoria. E questi probabilmente stanno tutti guadagnando i loro soldi scrivendo frontend del compilatore C ++.


4

Sono curioso di conoscere la "sintassi" di Google qui.

Il mio sospetto (e la paura) è che non stiamo parlando di quali parametri prende una chiamata (perché la maggior parte degli IDE ti spingerà lì in modo da non farli su Google) ma di tipo "come fare X".

Gli IDE hanno reso superflua la memorizzazione di nomi precisi ed elenchi di parametri nel modo in cui un tempo era richiesto e ciò ha reso molte persone un po 'pigre al riguardo, ma va bene.

Ma qualcosa di cui hai bisogno per Google? Per me questa di solito non è sintassi, è solo qualcosa che o non conosci o che conosci solo passivamente.

Ovviamente questo non vuol dire che è sbagliato avere cose su Google: le lingue possono essere piuttosto ampie in questi giorni e poche persone sanno tutto, ma direi che se affermi di essere competente con una lingua, Google dovrebbe essere l'eccezione piuttosto che la regola .

Per me a meno che tu non stia facendo qualcosa di relativamente insolito, o forse non sei arrugginito con la lingua dopo un periodo in cui fai qualcosa di diverso, se affermi di "conoscere" una lingua, non dovresti cercare su Google più del 10% delle cose al massimo, e dovrebbe essere roba molto specifica.

In riferimento all'idea che si tratta di avere una buona memoria, in realtà non lo è. Riguarda il tipo di sensazione istintiva che provi per qualcosa che davvero (piuttosto che superficialmente) conosci. Non considero il fatto che so come cucinare una Parmigiana Melanzane senza ricetta un segno che ho una buona memoria, è un segno che capisco come cucinare quel piatto - sono cose leggermente diverse.

Inoltre, chiediti questo, ti aspetteresti di andare in una cucina del ristorante e trovare lo chef costantemente alla ricerca di un libro di cucina? O per vedere il meccanico che lavora sulla tua auto sfogliare il manuale di Hayes per quel modello? Se vedessi una di queste cose, sarei piuttosto a disagio per quanto fosse brava quella persona.


Commento per il voto negativo? Sono sinceramente interessato a quale sia il disaccordo.
Jon Hopkins,

+1 - Buona chiamatasyntax != api
Jeremy Heiler,

3

La mia opinione è No. Non è la sintassi che è importante ma la tua logica per risolvere un problema o raggiungere un obiettivo Se supponi di lavorare su più lingue è naturale che a volte non ricordi l'esatta sintassi.


0

La sintassi è solo la vista in cima alla semantica sottostante del linguaggio perché la programmazione si basa sull'uso dei mattoni semantici sottostanti per costruire qualcosa. Se non capisci i concetti fondamentali utilizzati dalla lingua, non importa quanto sei bravo a memorizzare la sintassi, il tuo codice sarà un casino orribile. Come qualcuno ha detto una volta, "I bravi programmatori hanno in testa un interprete e un compilatore". Notare come non si fa menzione della sintassi perché non è lì che accade il vero lavoro.

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.