È saggio andare avanti e indietro tra due linguaggi di programmazione? [chiuso]


28

Ho scritto un bel po 'di PHP per quasi due anni. Ora sto sviluppando .NET (principalmente c #). Tuttavia, a volte torno indietro e faccio un po 'di php.

La mia domanda principale è: è saggio che continui a farlo o dovrei continuare lo sviluppo in C #? Questo mi danneggerebbe a lungo termine (intendiamoci, il mio obiettivo principale non è quello di essere un tuttofare) o è una buona pratica da fare?


30
meglio essere un
tuttofare

27
Ti danneggerà sicuramente se ti limiti a solo due lingue. Ottieni più strumenti diversi nella tua casella degli strumenti.
SK-logic

4
Poni questa domanda come se fossi totalmente libero di scegliere tra C # e PHP - è davvero così?
Doc Brown,

10
Conoscere tutti i dettagli sporchi di una lingua è senza dubbio molto utile. Ma quando lavori con più lingue, ad un certo punto della strada ti ritroverai a progettare parti del programma in un certo modo, indipendentemente dalla lingua in cui stai attualmente lavorando. Questa è una specie di nirvana programmatore, in cui la lingua diventa secondario e l'applicazione è ciò che conta. Questo è un ottimo posto dove stare, perché significa che hai il potenziale come programmatore anche in futuro, quando le persone lavorano in un nuovo linguaggio di fantasia Z ++.

2
Solo due? Molti programmatori lavorano regolarmente in diverse lingue. Conoscerne diversi ti offre un set più ampio di strumenti da cui attingere.
Caleb,

Risposte:


75

L'uso di due lingue contemporaneamente non è nulla. Non è raro che i programmatori utilizzino più lingue diverse ogni giorno. Compiti diversi e tecnologie diverse richiedono lingue diverse.

Proprio oggi ho già usato quattro o cinque lingue diverse, e questo è interessante perché finora non ho programmato nulla . Tutto quello che ho fatto è lavorare su una presentazione.

Come un buon programmatore è essenzialmente necessario che si conosce il modo per aggirare in diverse lingue, e l'unico modo di raggiungere (e quindi la conservazione) ragionevole fluidità è da utilizzare tali lingue.


4
Non sono sicuro di come chiunque possa essere un programmatore efficace senza usare almeno 3 lingue su base regolare.
Brian Knoblauch,

1
@Brian: quelle tre lingue sono la tua lingua parlata / scritta principale, il tuo linguaggio di programmazione principale e SQL e / o HTML?
KeithS

2
@KeithS Solo se stai creando pagine super semplici sul lato client e non tocchi mai i record XML sul lato server. CSS e Javascript contano come le loro lingue, così come XPath, XSLT e XQuery.
Tacroy,

2
Tutto ciò che contiene "La maggior parte delle persone" o "la maggior parte degli sviluppatori" dovrebbe essere seguito con una sorta di citazione. Altrimenti, è soggettivo. Quasi tutti gli sviluppatori che ho incontrato (e incluso me stesso) considerano SQL un linguaggio di programmazione e la completezza di Turing non è un fattore necessario per un linguaggio di programmazione (pensa che i DSL, che in genere sono progettati per NON essere completi). HTML e XML sono ovviamente non linguaggi di programmazione (sebbene si possano avere linguaggi specifici di dominio basati su XML). I regex non sono linguaggi di programmazione, ma lo sono gli automi programmabili / configurabili.
luis.espinal

2
Questa non è una fonte. Questo è un collegamento a una discussione (le discussioni non sono, di per sé, fonti) ed è focalizzata solo su CSS e HTML. Non affronta il test "turing complete" (ti suggerisco di leggere il lavoro di Martin Fowler sull'argomento dei DSL), né se SQL sia un linguaggio di programmazione (che è, ecco una vera fonte: en.wikipedia.org/ wiki / SQL o questo amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). O non stai leggendo il mio post completamente, o pensi che un link a stackexchange sia una fonte (che non lo è.)
luis.espinal

37

è una buona pratica fare?

È una pratica eccellente. Inoltre, consiglierei di espandere regolarmente l'elenco delle lingue provandone una nuova.

Le lingue e le tecnologie entrano ed escono molto rapidamente, nel giro di pochi anni. Ad esempio, l' Obiettivo C è decollato con una forza incredibile dopo essere stato quasi morto per due decenni e mezzo - un'eternità per gli standard di questo settore!

Non importa molto che tu abbia intenzione di "non essere un tuttofare": se hai intenzione di rimanere nel settore abbastanza a lungo, è molto sicuro presumere che dovresti cambiare il tuo stack tecnologico almeno una volta per tutta la tua carriera. L'uso di più lingue ora ti consente di attivare un preavviso ragionevolmente breve.


14

Questo mi danneggerebbe a lungo termine (intendiamoci, il mio obiettivo principale non è quello di essere un tuttofare) o è una buona pratica da fare?

Conoscere due o più lingue non ti farebbe mai del male. Conoscere le tue lingue in modo molto superficiale (senza comprendere il funzionamento interno) potrebbe farti del male.

La mia preferenza personale era sempre quella di padroneggiare prima un linguaggio di programmazione orientato agli oggetti . Ciò ti fornirebbe un apprendimento approfondito di tutti i concetti di programmazione e faciliterebbe l'apprendimento del prossimo una volta che ce ne fosse bisogno.

è una buona pratica fare?

Assolutamente si!

Suggerirei sicuramente di imparare più di uno e praticarli costruendo alcune applicazioni. Nel frattempo, potresti anche pianificare di apprendere alcuni linguaggi di scripting (jQuery, KnockoutJs, ecc.) E le librerie se stai facendo o stai pianificando di fare sviluppo web.


1
Non credo, l'apprendimento di OOP ti insegnerà molti concetti dalla programmazione funzionale, per esempio, le regole di scoping di JavaScripts sono molto diverse dagli altri linguaggi OOP popolari come C #, ecc. Ci sono molti altri concetti là fuori.
phant0m

Sono fortemente d'accordo. Tuttavia, jQuery e KnockoutJs NON sono linguaggi di scripting. E non consiglierei "l'apprendimento di jQuery" senza una conoscenza di base di JavaScript.
Bruno Schäpper,

non puoi imparare jQuery senza apprendere JavaScript nel processo perché jQuery non è una lingua, è una libreria scritta in una lingua.
ILikeTacos,

5

Non dovrebbe farti del male a lungo termine, essere abili in diverse lingue ti rende uno sviluppatore a tutto tondo. Usare "lo strumento giusto per fare il lavoro giusto" è l'obiettivo finale ed essere esperto in diverse lingue ti aiuta a raggiungere questo mentre sai cos'altro c'è là fuori e puoi prendere una decisione ben informata su quale piattaforma / framework / lingua usare Completare qualcosa.


Grazie per la risposta, ma mi chiedevo se il cambiamento frequente non danneggiasse il mio processo di apprendimento o lo prolungasse o dipende solo dalle capacità della persona?
Lamin Sanneh,

@LaminSanneh L'apprendimento di un'altra lingua non ti fa peggiorare la prima volta. Non è un gioco di ruolo e non hai un numero prefissato di punti "abilità di programmazione" che puoi assegnare a ciascuna lingua. Nel peggiore dei casi, ti toglie il tempo che avresti dedicato a un'altra lingua. Ma le lingue sono solo un modo per esprimere le tue idee e l'apprendimento di nuove lingue ti offre nuove e nuove prospettive e idee che puoi applicare a quelle che già conosci. Certo, non conoscerai la sintassi di ogni lingua fuori mano, ma a chi importa? È una rapida ricerca su Google
Jay

5

Nel corso della tua carriera, si hanno a imparare nuove lingue e nuove tecnologie; l'industria lo richiede semplicemente. Al mio primo incarico professionale, ho dovuto consegnare il codice scritto in Ada, C e Fortran, insieme ad alcuni script SQL e shell. Ho dovuto passare da C ++ a Java e viceversa negli ultimi due anni. Ho scritto script di shell in csh, bash e perl.

Prendere tempo per imparare lingue diverse, specialmente se si trovano in domini diversi (OO, funzionali, logici, ecc.) Ti aiuteranno in diversi modi. Manterrà il tuo cervello acuto. Ti aiuterà a separare i concetti dall'implementazione (ad es. Hash e mappe non sono solo tipi di dati in un particolare linguaggio). Ti darà un'idea migliore di quali strumenti sono appropriati per un determinato problema (ad esempio, non costruirò un sito Web in C, né scriverei un driver di dispositivo in Haskell). Potrebbe essere più facile per te trovare un lavoro ("Ehi, conosce già Intercal 1 , non dobbiamo addestrarlo!"). Ti darà un'idea di quali sfide devono affrontare i progettisti del linguaggio. Potrebbe ispirarti a creare il tuo linguaggio di programmazione.

Per lo meno, ti impedirà di annoiarti.


1. Scherzo. Non provare a imparare Intercal.


4

Le persone in pensione quest'anno hanno iniziato la loro carriera prima della creazione di C. È sicuro dire che potresti cambiare linguaggio di programmazione una o due volte nella tua carriera. Non vuoi lavorare per i datori di lavoro che non lo capiscono.

Quando sei nuovo, il cambio di contesto tra due lingue è molto più difficile, quindi sarai più produttivo se lavori almeno 4-8 ore in una lingua prima di cambiare. Successivamente sarai in grado di passare istantaneamente senza perdita di produttività. In altre parole, l'uso di due lingue alla fine diventerà un punto di forza invece di rallentarti.


2

C'è un lato positivo e un lato negativo di questo.

Ecco il lato positivo ...

Come altri hanno già detto, essere in grado di imparare nuove e lavorare con molte lingue e strumenti di programmazione è quasi essenziale per avere una lunga carriera nella programmazione. Le cose cambiano nel corso degli anni, gli strumenti / le lingue vanno e vengono. Certo, ci sono alcune persone che si accontentano di programmare nello stesso mainframe COBOL che hanno usato negli anni '80, ma questa è una situazione relativamente rara. La maggior parte dei programmatori finisce per cambiare più volte strumenti / lingue nel corso della propria carriera. A volte potresti essere assunto perché conosci una tecnologia più vecchia o conosci tutte le lingue con cui un'azienda sta lavorando.

Il rovescio della medaglia è ...

Alcuni datori di lavoro ti vedranno come un "tuttofare, padrone di nessuno" e respingeranno la tua candidatura senza darti alcuna possibilità. Stanno cercando un esperto ristretto in un'area specifica, non semplicemente un buon programmatore ben arrotondato. A volte potresti essere escluso dalle risorse umane perché non hai "5 anni di esperienza continua in [X]". Potresti essere in grado di evitarlo adattando il tuo curriculum per adattarlo al lavoro, ma questo potrebbe non aiutarti in un colloquio tecnico.

Per me, il lato positivo è molto meglio, ma è necessario essere consapevoli del fatto che una minoranza di organizzazioni lo considera negativo.


+1, inoltre, sono sicuro che esiste una correlazione tra questa minoranza di organizzazioni e una cattiva programmazione e inefficacia.
K.Steff,

2
Quel negativo viene però cancellato dai datori di lavoro che pensano l'esatto contrario. Ho voce in capitolo nelle decisioni di assunzione in cui lavoro, e sarei molto difficile convincere ad assumere a posto qualcuno che avesse solo un linguaggio di programmazione al suo attivo. Forse per una posizione junior, ma certamente non per uno sviluppatore senior.
Jon Hanna,

@JonHanna - Il problema principale è che il team di sviluppo potrebbe non riuscire mai a intervistare il potenziale sviluppatore dal momento che vengono sottoposti a screening dalle risorse umane, a volte da un programma automatizzato. Questo è, ovviamente, un problema più comune nelle organizzazioni più grandi. È importante assicurarsi che il personale delle risorse umane non stia selezionando i migliori candidati in base a criteri arbitrari.
jfrankcarr,

+1 per indicare i contro . Da dove vengo io, il numero di aziende che mantengono quel punto di vista "tuttofare, padrone di nessuno" non è poi così piccolo.
lsoliveira,

Sì, ma potremmo trasformarlo in qualsiasi buona qualità; potrebbe esserci sempre un idiota nelle risorse umane che pensa che sia una cattiva qualità. Alla fine, però, se le risorse umane in un'organizzazione sono degli idioti, faranno delle cattive assunzioni, e mentre vengono assunti ci potrebbe essere migliore della linea di disoccupazione, cercherai immediatamente un nuovo lavoro e troverai lavoro altrove .
Jon Hanna,

2

Durante lo sviluppo di PHP hai scritto javascript o SQL? Nel tuo sviluppo C # potresti ancora usare entrambi. Non è così semplice come usare un linguaggio di programmazione.

Se sei felice di farlo, non preoccuparti. Se non vuoi fare entrambi (o nessuno dei due), allora hai un problema.


2

Imparare un nuovo linguaggio di programmazione ti insegnerà cose sulla programmazione che puoi applicare alle lingue che già conosci. Dovresti assolutamente considerare di giocare almeno con altre lingue, anche se non le usi professionalmente, piuttosto che averne solo poche.

Idealmente, uno che è molto diverso nell'approccio a quelli che già conosci.


2

No, non c'è nulla di sbagliato nell'apprendere più lingue e usarle tutte abbastanza spesso. Nella mia vita quotidiana posso incontrare Ruby, PHP, JavaScript, CoffeeScript, Python e occasionalmente C. Conosco abbastanza bene tutti questi linguaggi e passando da uno all'altro mi passa un interruttore nel cervello. Sicuramente mi mancano le funzionalità di alcune lingue quando vado in un'altra, ma la supererai.

Cerco di avere sempre una lingua che sto imparando a fondo e poi un'altra come "emergente". In questo modo hai sempre un chiaro obiettivo educativo e poi qualcosa all'orizzonte. In questo momento Ruby è la mia lingua principale e sto sperimentando Go. Probabilmente non otterrò mai un lavoro come sviluppatore Go, ma imparare una nuova lingua è diventato uno sviluppatore migliore.

Quando intervisto uno sviluppatore mi piace sempre vedere alcune lingue diverse sul loro curriculum. Se uno sviluppatore ha "C / C ++" o "PHP e Javascript" sul suo curriculum, sembrano molto meno interessanti di qualcuno che abbia una solida conoscenza di 4 o 5 lingue. Assicurati di sentirti a tuo agio in qualsiasi lingua che elenchi, qualsiasi cosa sul tuo curriculum è un gioco equo nell'intervista!

In breve: l'uso di più lingue regolarmente è un segno di un buon sviluppatore che si prende cura del proprio mestiere. Continua a programmare!


Direi che se lo sviluppatore dice "C / C ++" in un curriculum, vorrei che fossero le uniche lingue lì. Ma con altri linguaggi infallibili, tanto meglio è.
Coder

2

Quando guardiamo i curriculum di solito cerchiamo qualcuno che conosca più lingue. Inoltre, poiché l'esperienza di una persona aumenta, anche il numero di lingue utilizzate dovrebbe aumentare.

Nel nostro ambiente spesso dobbiamo affrontare problemi nuovi e interessanti e siamo alla ricerca di persone che siano disposte a saltare e risolvere tali problemi, sia che debbano imparare una nuova lingua o meno. Il problema potrebbe essere nel codice in esecuzione su un desktop di Windows, un server Windows, un server Linux o in un browser.

Conoscere più lingue è un segno di qualcuno con un buon atteggiamento nei confronti del proprio mestiere. Vogliono imparare sempre cose nuove così fanno. La mancanza di conoscenza di un certo numero di lingue è un segno per me che una persona fa solo il minimo indispensabile e non è interessata all'apprendimento.


2

È sempre stato il caso per le persone di programmare usando più di una lingua. Quando le persone usavano Assembly, devono usare un nuovo linguaggio Assembly ogni volta che cambiano architettura.

Quando le persone facevano COBOL o Fortran, in genere facevano anche giochi di ruolo e / o JCL.

In Unix, le persone lavoravano con C, sed, awk, shell script e praticamente tutto nel lavello della cucina Unix (quasi tutti gli strumenti da riga di comando in Unix sono i suoi DSL, molto speciali).

In DOS, le persone avrebbero programmato in Turbo Pascal o C oltre agli script batch. Più tardi, quando arrivò Windows, era VB o qualcosa di simile a PowerBuilder accoppiato con SQL e probabilmente script di installazione batch.

Al giorno d'oggi, è di fatto che le persone "lavorano" con più di due lingue in un dato giorno (e per "lavoro" intendo fare la codifica quotidiana o avere conoscenze di lavoro). Almeno Java o C # o VB miscelati con JavaScript e SQL. Quindi entrano in gioco altre lingue per lo scripting batch / lavoro e simili. Quindi, per ogni lingua, hai un framework che implementa esso stesso un DSL interno, un mini-linguaggio a sé stante.

Pertanto, non è solo utile lavorare con più di una lingua, ma è necessario. Non c'è modo di costruire un sistema moderno e complesso con un solo linguaggio (e per "costruire" non intendo solo codificare qualche schifezza che si compila, ma costruire qualcosa con un design decente).

Cavolo, uscirò da un arto e dirò che mi aspetterei che i bambini al college siano competenti in due o più lingue se sono seriamente intenzionati a svolgere questa professione.

Quindi, per quanto riguarda la tua domanda:

La mia domanda principale è: è saggio che continui a farlo o dovrei continuare lo sviluppo in C #? Questo mi danneggerebbe a lungo termine (intendiamoci, il mio obiettivo principale non è quello di essere un tuttofare) o è una buona pratica da fare?

Quindi, una risposta breve, no, l'uso o il passaggio da una lingua all'altra non ti darà i trucchi. Conoscere più di una lingua non ti renderà un tuttofare e non c'è modo per uno sviluppatore di diventare un esperto non essendo in grado di utilizzare più di una lingua.


1

Più devi confrontare in riferimento alla / e tua / e lingua / e primaria / e, meglio capirai i compromessi di progettazione che hanno portato a renderlo particolarmente forte o debole in certe cose e ne trarrai vantaggio / compenso. Domina almeno uno ma non preoccuparti di essere un tuttofare per molti altri. Sembra solo buono.

È meglio chiedere come riprende con una sola lingua elencata dagli sviluppatori "senior". La risposta a questa domanda è: "Non molto interessato a quello che fanno per vivere".


0

Due lingue possono aiutarti o no - dipende. Non ti farà del male, questo è certo. Molti sviluppatori tendono a pensare che usare qualcos'altro oltre alla "lingua principale" sia pura perdita di tempo, ma non sono assolutamente d'accordo. Imparare un'altra lingua (e usarla) è un puro vantaggio: ti dà una prospettiva diversa su come risolvere i problemi. Può succedere che inizierai a usare una delle lingue per compiti particolari in ogni momento (come è successo a me dopo aver avuto la possibilità di imparare e usare Python).


0

In questa situazione non ti stai chiedendo di passare da JAVA a C # e viceversa, invece vai con C # e PHP che in realtà non sono un grosso problema.

Supponiamo che tu voglia fare alcune cose basate su WEB in cui stai usando uno stack WAMP (Windows / Apache / MySQL / PHP) e C #. Usi C # per scrivere alcuni servizi basati su SOAP e poi usi PHP per consumarli.

Questo mi sembra del tutto accettabile.

Ad ogni modo, conoscere più di una lingua è buono. Più sai, meglio è. Librerie PHP / C # / Java / Python / javascript [JQuery per esempio]. Sii utile a quante più persone puoi.

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.