Esiste davvero una scelta della lingua migliore per un progetto specifico?

6

Programmers.SE ha un sacco di domande sui programmatori principianti che chiedono se devono usare una lingua specifica o un'altra nel loro lavoro quotidiano, o se devono imparare una lingua o un'altra. Queste domande vengono rapidamente chiuse e quando ricevono risposte, quelle risposte sono di tipo:

Use what is best for a specific project.

Ci sono linguaggi che non possono essere ragionevolmente utilizzati per alcuni tipi di progetti. Ad esempio, sarebbe strano usare Assembly per creare un sito Web dinamico, o usare PHP per creare una ricca applicazione Windows desktop o usare Ruby per creare un videogioco con accelerazione hardware.

Ma in generale, funziona la regola "Usa ciò che è meglio per un progetto specifico?

  • Se creo un'applicazione desktop aziendale semplice, come posso dire che per questa app aziendale, C # non è affatto adatto, mentre Java è la scelta migliore?
  • Se creo un normale sito web di piccole o medie dimensioni, come posso dire che devo usare C # / ASP.NET MVC su Ruby on Rails?

Confrontando le lingue tradizionali, sono tutte molto simili . Scelgo C # su Java perché non conosco molto bene Java; Scelgo ASP.NET MVC su PHP perché secondo me , PHP fa schifo; Scelgo PHP su ASP.NET MVC quando i miei clienti hanno un server Web che esegue Linux. In tutti i casi, ogni volta che devo scegliere, considero:

  • le mie competenze nelle lingue tra cui scegliere,
  • lingue che personalmente desidero e utilizzo,
  • requisiti hardware e software (ovvero difficoltà a distribuire il sito Web Java o Ruby on Rails su un server che ha già un supporto per PHP),
  • Preoccupazioni legacy e di interoperabilità.

Significa che non ho una vasta conoscenza in parecchie lingue? Cosa succede in altre aziende? Esiste una vera scelta, per ogni progetto, della lingua che è la migliore in un caso preciso? come si potrebbe fare una scelta in una situazione in cui le lingue tradizionali sono così simili?

    
posta Arseni Mourzenko 06.08.2011 - 20:37
fonte

3 risposte

5

Come sappiamo tutti gli ingegneri, non esiste una cosa come la migliore , la migliore può essere definita solo se hai qualche tipo di metrica per confrontare le alternative.

  • Ti senti a tuo agio nel lavorare in quella lingua? In caso contrario, probabilmente sceglierai scelte di progettazione sbagliate a livello di lingua.
  • Quanto velocemente puoi sviluppare funzionalità per la tua app in quella lingua? È facile estendere la funzionalità di un codice esistente o sarà un PITA perché la lingua crea troppi vincoli?
  • La lingua è abbastanza veloce? Per alcune attività questo è obbligatorio, per gli altri, dove è possibile scalare facilmente con più macchine non ha importanza.
  • Compilano il codice nativo? Per alcuni software questo è obbligatorio, le persone non installeranno il tuo piccolo se questo viene fornito con un ambiente di runtime 50-500M.
  • Fornisce le librerie e gli strumenti necessari (leggendo XML, lavorando con tutti i tipi di database, ecc.). Non vuoi reinventare la ruota. Ok, questo probabilmente non è il miglior punto della lista, la maggior parte delle lingue è abbastanza matura per questo, ma se scegli un linguaggio / framework relativamente nuovo questo può essere un problema.
  • Se hai bisogno di hosting esterno, è ben supportato?
  • (se il progetto è abbastanza grande) è facile trovare sviluppatori? Sono a buon mercato? Questo è un fattore economico. Sono d'accordo sul fatto che PHP faccia schifo, ma c'è un'abbondanza di sviluppatori PHP e sono molto efficienti (almeno rispetto a uno sviluppatore Java o C #). Siamo onesti, fare un sito web medio non è una scienza missilistica, non richiede molta abilità (almeno finché non hai molti visitatori o un sistema molto complesso).

Quindi, una metrica è una miscela di tutti questi fattori con pesi diversi. Ora scegli i tuoi pesi e scegli il migliore;)

Poiché i pesi sono giudicati soggettivamente, direi che teoricamente SÌ, c'è una lingua ideale (o una manciata di lingue) per un progetto specifico, ma praticamente NO, devi scegliere una lingua con cui hai già familiarità e < em> pensa che è il migliore per il lavoro.

    
risposta data 07.08.2011 - 00:22
fonte
4

Un commerciante usa sempre lo strumento giusto per il lavoro. Di norma un programmatore di solito trasforma ogni problema in un chiodo in modo che possa usare il suo martello.

Le ragioni di ciò sono diverse da un commerciante di avaerage, che ha la speranza di diventare proficuo usando tutti gli strumenti comunemente disponibili, uno sviluppatore medio non ha speranza, e quindi deve diventare proficuo in uno o due "strumenti" di molti, o abbastanza mediocre in molti e proficui in nessuno.

Quindi la "scelta migliore", a differenza di un marchio, è più sull'ambiente che sul "migliore" tecnico. Ad esempio, sono a conoscenza di un grande progetto recentemente riscritto in Java, da una base di sorgenti ADA, in gran parte non si possono più reclutare sviluppatori ADA, e i programmatori Java sono una dozzina. Java è probabilmente molto lontano dalla soluzione tecnica ideale, ma Erlang (probabilmente un linguaggio migliore per il loro dominio problematico) non è nemmeno l'inizio del 2011.

    
risposta data 07.08.2011 - 05:01
fonte
0

Spesso puoi scegliere tra diverse lingue ugualmente adeguate e puoi semplicemente scegliere quello che ti piace di più.

In molti altri casi ci sono chiare restrizioni che risolvono almeno una larga parte delle possibili scelte. Se l'applicazione deve essere eseguita su diversi sistemi operativi, le lingue solo per Windows come C # non sono più nell'elenco.

    
risposta data 06.08.2011 - 20:48
fonte