Perché Java è la lingua franca in così tante istituzioni? [chiuso]


22

EDIT: Questa domanda all'inizio sembra colpire Java, e immagino che a questo punto sia un po '. Tuttavia, il punto più grande che sto cercando di chiarire è il motivo per cui ogni singola lingua viene scelta come unica soluzione per essere una soluzione a tutti i problemi. Java sembra essere quello che è stato usato, quindi è quello che ho dovuto battere qui, ma non sono intenzionalità a strapparne uno nuovo :)

Non mi piace Java nella maggior parte delle impostazioni accademiche. Non sto dicendo che il linguaggio in sé sia ​​cattivo - ha diversi aspetti estremamente desiderabili, soprattutto la capacità di funzionare senza ricompilazione su quasi tutte le piattaforme. Nulla di sbagliato nell'uso della lingua per la tua prossima app ^ TM. (Non qualcosa che farei personalmente, ma è più perché ho meno esperienza con esso, piuttosto che il design è scadente)

Penso che sia uno spreco il fatto che i corsi CS di alto livello vengano insegnati usando Java come lingua. Troppi miei studenti non possono programmare un lavoro degno, perché non sanno come lavorare in un mondo non raccolto. Fondamentalmente non comprendono le macchine per le quali stanno programmando. Quando qualcuno può lavorare al di fuori di un mondo raccolto dall'immondizia, può lavorare all'interno di uno, ma non viceversa. GC è uno strumento, non una stampella. Ma il modo in cui viene usato per insegnare agli studenti di informatica è come una stampella.

L'informatica non dovrebbe insegnare un'intera suite di corsi su misura per una singola lingua. Gli studenti escono con l'idea che tutto il buon design sia un design idiomatico di Java, e che il design orientato agli oggetti sia UN VERO MODO CHE È L'UNICO MODO CHE LE COSE POSSONO ESSERE FATTE. Altre lingue, almeno una delle quali non è una lingua raccolta immondizia, dovrebbero essere utilizzate nell'insegnamento, al fine di dare al laureato una migliore comprensione delle macchine.

È imbarazzante che qualcuno con un dottorato di ricerca in CS da un'istituzione rispettata non possa programmare l'uscita da un sacco di carta.

Quel che è peggio, è che quando parlo con quei professori di CS che realmente capiscono come funzionano le cose, condividono sentimenti come questo, che stiamo facendo un disservizio ai nostri studenti facendo tutto in Java. (Nota che quanto sopra sarebbe lo stesso se lo sostituissi con qualsiasi altra lingua, generalmente il problema è usare una sola lingua, non Java stesso)

In totale, sento di non poter più rispettare alcun tipo di laurea - quando non riesco a vedere chi mi circonda in grado di programmare la propria uscita da problemi di fizzbuzz.

Perché / come è potuto essere così?


9
Non ti preoccupare. Dai a Oracle una mezza possibilità e risolveranno la situazione :) Le loro azioni legali contro Android e Apache sono solo l'inizio di allontanare gli sviluppatori. Insegno in un'istituzione che ha preso quanto sopra come spunto per iniziare a insegnare Python, in previsione del mercato futuro.
SamGoody,

3
A quali ambienti accademici ti riferisci? Non so da nessuna parte dove gli studenti CSci dovrebbero imparare solo una lingua. (L'ultima volta che ero a scuola, avresti potuto cavartela con C e Scheme, credo, se avessi scelto attentamente le tue lezioni e le tue lezioni, ma avresti usato almeno due lingue diverse.)
David Thornley il

16
Puoi spiegare come funziona la tua cache L1? Puoi progettare un ALU? Puoi spiegare le equazioni di Maxwell? E le proprietà termodinamiche della tua scheda madre? Potresti costruire un'unità USB? Sai DAVVERO come funziona il tuo computer? O hai scelto un livello di astrazione adeguato ai tuoi interessi e sei passato da lì?
MetricSystem

5
Perché decidere che è necessario comprendere la gestione della memoria per "comprendere fondamentalmente le macchine per cui stanno programmando" è un livello completamente arbitrario a cui fermarsi. Se non è necessario comprendere i problemi che ti interessano, il tuo tempo è spesso meglio speso studiando ciò che ti interessa (dal momento che nessuno ha abbastanza tempo per imparare tutto). E qualsiasi argomento tu mostri sul motivo per cui i programmatori Java devono imparare la gestione della memoria potrebbe essere esteso all'infinito fino a quando tutti hanno bisogno di conoscere la fisica atomica per "capire" qualsiasi cosa.
MetricSystem

7
Inoltre, se qualcuno ha un argomento da uomo qui sei tu, dato che non ho mai sentito parlare di un singolo programma CS che presenta Java come linguaggio di programmazione.
MetricSystem

Risposte:


30

Questo non è un problema Java, è un problema di insegnamento. Non sapere come programmare non è un errore delle lingue, è colpa degli studenti. Lo stesso vale per tutti i tuoi problemi, GC, conoscenza di base della macchina, come funzionano le cose "sotto il cofano" per così dire.

La tua lamentela principale sulla raccolta dei rifiuti mi getta leggermente. A meno che tu non stia eseguendo la garbage collection C o C ++ in genere è molto buona e non è un problema. Preferiresti che tutti imparassero l'assemblea? Le lingue di livello superiore che sono rigorose sono molto utili per l'insegnamento. Ti dà la flessibilità di librerie, pacchetti e altre prelibatezze quando ne hai bisogno, senza il linguaggio confuso "zucchero" presente nella maggior parte delle altre lingue di livello superiore (PHP, Ruby, Python, Perl).


5
Non sto dicendo che le lingue di livello superiore non dovrebbero essere insegnate. Ma sto dicendo che dovrebbe essere insegnato anche qualcosa di livello inferiore (sull'ordine di C o Fortran o qualche altro linguaggio di programmazione di sistemi). (Andare più in basso di C è meno utile perché al di sotto di quel livello tutto ciò che impari sarà specifico per una singola architettura di macchina). Non sto dicendo che tutti i laureati CS dovrebbero essere grandi programmatori di basso livello. Ma sto dicendo che se affrontano un problema di basso livello, non dovrebbero esplodere e morire, come sembrano fare tutti gli studenti intorno a me.
Billy ONeal

3
@Billy: scendere al di sotto del livello di apprendimento iniziale è difficile. Mi ritrovo a guardare il codice C ++ / C e mi diverto un po 'a divertirci avvolgendolo attorno. Non aspettarti miracoli, ma non aspettarti neanche gli angeli. I programmatori hanno bisogno di guidare, senza che tutti si "sputteranno e moriranno" abbastanza rapidamente, indipendentemente dal livello del problema.
Josh K,

5
@Josh: Abbastanza giusto, ma l'esposizione formale di IMHO ad almeno un altro ambiente di programmazione dovrebbe essere una necessità per ottenere una laurea in CS. Il titolo non dice "Capisco Java", dice "Capisco CS". I due non sono gli stessi e non è possibile ottenere una piena comprensione di CS utilizzando Java (o, per questo, qualsiasi linguaggio) da solo. (A proposito, +1)
Billy ONeal

2
@JoshK: incapacità di eseguire il debug a livelli bassi e capacità notevolmente ridotta di ragionare correttamente sulle implicazioni del codice che scrivono.
Mason Wheeler,

1
Conosco programmatori che hanno imparato solo Java e sono spaventati da C ++ o C perché devono usare i puntatori. Non so se qualcuno che non può programmare con i puntatori possa essere considerato un vero programmatore: dopo tutto, tutti i moderni computer e runtime sono ancora basati su un'architettura di base che coinvolge registri, memoria principale, stack, heap. Quindi preferisco programmare in Java piuttosto che in C ++ (è sicuramente più facile fare le cose se non devi preoccuparti della gestione della memoria) ma sono d'accordo che l'insegnamento non dovrebbe assolutamente essere limitato a Java.
Giorgio,

12

Le università lo stanno davvero facendo? O è solo una percezione che le persone ottengono quando ottengono un candidato per un colloquio di lavoro negativo?

Ho conseguito la laurea in CS 4 anni fa e mentre Java veniva utilizzato nelle lezioni di introduzione, non è stato particolarmente enfatizzato dopo. Al di fuori della mia testa, i corsi di base richiesti richiedevano l'apprendimento di Java, C, C ++, SML (linguaggio di programmazione funzionale), assembly, matlab e CAST (linguaggio di descrizione del circuito). Questo non tiene conto di tutti i corsi di matematica e di teoria del CS e, naturalmente, della mezza dozzina di corsi elettivi di CS che ti avrebbero esposto a un sacco di più. Dal parlare con gli amici in diverse università, non sembrava che quello che stavano facendo fosse molto diverso.

Se ci sono università che insegnano esclusivamente Java, questa è davvero una tragedia. Non perché Java è un male, ma perché è solo uno degli strumenti che dovrebbe essere disponibile per un programmatore. Uno sviluppatore che conosce solo Java equivale a un falegname che sa solo usare un martello. Tuttavia, ho difficoltà a credere che sia davvero così, almeno per le università rispettate. Ho il sospetto che questa sia solo la percezione di vedere cattivi candidati e incolpare la scuola per l'incompetenza dei candidati piuttosto che per la mancanza di guida / motivazione / curiosità / professionalità / ecc. Del candidato.


2
Concordato. Mi sono appena laureato qualche anno fa e mentre la maggior parte delle mie lezioni venivano insegnate usando Java, era difficile laurearmi senza frequentare una lezione che era stata insegnata usando C o C ++, e avevamo anche un corso di linguaggio di programmazione che enfatizzava l'uso di Haskell .
mipadi,

Nella mia laurea abbiamo fatto prima Pascal, poi Java come nostro linguaggio OO. Dopo il 2 ° anno, il 90% dei prof non si è preoccupato della lingua che hai usato. Alcuni di noi usavano c / c ++ / ruby ​​/ C # / python / persino haskell, ma la maggior parte delle persone si sono bloccate con ciò che sapevano, java. Solo una manciata di corsi ha richiesto l'utilizzo di assembly / c / c ++, vale a dire cose come il nostro corso di grafica 3D (opzionale) preimpostato c / c ++ forzato per l'opengl. E ovviamente il corso sui sistemi di base ha imposto l'assemblaggio SPARC (perché stavamo lavorando intenzionalmente e di livello basso). Ho sentito che sono passati a python / c ++ nel 1 ° anno ora però ...
Aren

11

Sono davvero sorpreso che questa sia la situazione di molte scuole. Quando mi sono laureato in CS, ho seguito una serie di corsi di lingue che tra loro includevano tutte le lingue popolari del giorno (era quasi 40 anni fa): assemblatore (Univac 1108 e MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp e Algol 68. Non riesco a immaginare di avere solo una lingua insegnata. O come avrei potuto apprezzare ciò che i compilatori dovevano fare senza aver scritto alcuni programmi di assemblaggio.

Abbiamo usato Algol e FORTRAN per la maggior parte dei corsi di dati e algoritmi. Mi sarebbe piaciuto passare più tempo con Lisp, invece avevamo solo un'introduzione e ora sto cercando di riapprendere alcuni concetti. Abbiamo usato SNOBOL4 per scrivere parser - e il suo abbinamento di pattern con backtracking ha creato una buona base per il lavoro successivo delle librerie regex incluse in molti linguaggi moderni.

Questa introduzione a mezza dozzina di lingue ha suscitato un interesse per me che è continuato da allora.


8

Per ottenere il vero motivo, dovresti chiedere alle persone che gestiscono quelle istituzioni (e anche allora, potrebbero non dirtelo).

Diverse possibili ragioni (e non sto né difendendo né accusando nessuno qui, solo supponendo):

Puoi fare le cose in Java

Java è un linguaggio generico e come tale può essere utilizzato per risolvere molti problemi.

Molti insegnanti capiscono Java

È difficile insegnare una lingua che non capisci

Java è popolare

Ciò significa che ci sono molte risorse Java - libri, una comunità attiva, librerie di codici ecc.

Java è facile

Non devi capire molte cose di basso livello o teoria per fare Java. Potresti non farlo bene , ma almeno puoi fare le cose.

Java è pervasivo

Puoi eseguirlo su più o meno qualsiasi cosa.

Ci sono lavori per programmatori Java

Ci sono molti lavori che richiedono Java: gli insegnanti dovrebbero preparare gli studenti al mondo reale.

C'è un tempo limitato

In molti corsi, non c'è tempo per insegnare più lingue, teorie, concetti di basso livello ecc.

È quello che vogliono gli studenti

Molti studenti hanno già sentito parlare (e persino usato) di Java. A loro piace perché è familiare.


6

Questo è ciò che l'industria ha chiesto. Mancavano gli sviluppatori Java, quindi le scuole iniziarono a crearli. Le aziende hanno sviluppatori che possono iniziare a lavorare non appena varcano la soglia.

Comunque, la lingua non ha importanza. Potevano insegnare un linguaggio non GC e comunque produrre cattivi programmatori. L'uso delle scuole di lingua è un dettaglio di implementazione. Le scuole dovrebbero insegnare concetti. Se questo non è il caso, allora è la scuola il problema, non la lingua con cui insegnano. Solo perché qualcuno non sa cosa sia un puntatore non significa che non può essere un programmatore efficace.

GC è comunque la via del futuro.


4
Non è necessario sapere cos'è un puntatore. Ma devi essere in grado di raccogliere il concetto relativamente rapidamente. Non essere in grado di comprendere i puntatori, o concetti simili ai puntatori, indicano la mancanza di comprensione dell'informatica nel suo insieme. Non sto dicendo che tutti i laureati in CS debbano essere fantastici programmatori di basso livello, ma sto dicendo che dovrebbero almeno avere una comprensione concettuale di cosa sta succedendo quando ricevono un diploma universitario di 4 anni.
Billy ONeal,

1
CS non riguarda la programmazione.
Javier,

1
@Javier: come fa CS a non programmare? Certo c'è quel ramo del CS, "Theoretical Computer Science", che non si tratta di programmazione, ma per la maggior parte si è sulla programmazione.
Billy ONeal,

1
@Billy ONeal: la definizione di Wikipedia è un po 'lunga, ma la parte che si avvicina di più alla programmazione è "lo studio delle tecniche pratiche per la loro attuazione". cioè non si tratta dell'implementazione (programmazione) ma dello studio delle tecniche di implementazione (algoritmi, strutture, linguaggi, ecc.)
Javier

1
@Javier: penso che "lo studio della programmazione" e "l'azione della programmazione" siano la stessa cosa. Dopotutto, il codice viene letto molto più spesso di quanto non sia scritto. Ma non è questo il punto: quando ricevi una laurea in CS, la cosa che finirai per fare è programmare.
Billy ONeal,

4

Pigrizia e motivo di profitto. Java attira l'80% delle persone, con il 20% dello sforzo. Tuttavia, questo spesso produce programmatori voodoo "scimmia vedi scimmia fare" che non hanno una profonda comprensione di ciò che sta accadendo e non sono in grado di scavare più a fondo degli strumenti di alto livello.

Insegnare correttamente C / C ++ è difficile. Anche se fatto bene, molti non capiranno appieno i concetti di basso livello come i puntatori (ci sono studi su questo). Inoltre, non sembra immediatamente rilevante nel mercato del lavoro.


2
Ma se capisci i puntatori, puoi capire i riferimenti molto più facilmente.
Michael K,

3

Sono principalmente d'accordo, ma in una certa misura.

Se devi insegnare a CS Cource focalizzato su strutture di dati o algoritmi. Ottenere la maggior parte delle cose non necessarie è una buona cosa. Non vuoi che gli studenti si occupino di oggetti di basso livello quando apprendono concetti di alto livello.

D'altra parte, dovrebbero essere insegnate anche cose di basso livello. Solo così abbiamo programmatori più completi.


Non sto parlando di un singolo corso. Per un singolo corso, va bene. Per un intero curriculum, non lo è.
Billy ONeal,

3

Come sempre si tratta di cosa vuoi insegnare e in quanto tempo devi farlo.

Fare cose in Java significa che non devi avere a che fare con puntatori vaganti e free / malloc. Ciò significa che ci sono meno bug difficili da trovare.

Ciò non significa che non dovresti conoscere la macchina sottostante - che devi essere bravo nel commercio - ma che forse dovresti scegliere lo strumento giusto per il lavoro. Gli algoritmi di alto livello non sono forse l'argomento migliore per il corso di assemblatore.


Per un corso introduttivo alla programmazione o un corso sulle strutture di dati, Java va bene. Tuttavia, non per un intero curriculum di 4 anni.
Billy ONeal,

@Billy. Concordato. Sto solo menzionando che l'uso di Java ti compra alcune cose di cui non devi preoccuparti. Dovresti imparare le basi in altri corsi senza Java.

2

È troppo chiedere che gli venga insegnato qualcosa su come funzionano davvero i computer ? Non ha senso per me che qualsiasi schema del corso CS non includa qualcosa di sistemi operativi e archetecture informatici. Non sto dicendo che dovresti essere in grado di progettare un computer sul retro di una busta, ma una panoramica generale mette in prospettiva tutte le lingue. Voglio dire, Java funziona in una macchina virtuale!


1
Esistono buoni programmi di informatica che non includono un corso OS e un corso di organizzazione informatica?
mipadi,

Spero sicuramente di no!
Michael K,

0

In tutta onestà non penso che dovresti perdere il rispetto per tutti i gradi e soprattutto non CS perché l'unica lingua insegnata è Java.

Qualsiasi comp decente. Lo studente di scienze comprende che la sua laurea in CS non è altro che un pezzo di carta e che la vera conoscenza verrà da progetti personali e studi personali. Mi piacerebbe pensare che i bravi studenti sappiano che hanno bisogno di conoscere C e imparare a fare le cose in Linux / Unix e imparare a NON avere la mano tenuta dai linguaggi moderni.


-1

Non vedo alcun problema con l'utilizzo di Java. Il problema più grande (come hai detto tu) è quando le università insegnano la programmazione imperativa come il modo migliore e unico per risolvere tutti i tuoi problemi. Questo è molto lontano dalla verità. Ad esempio invece di usare tre lingue imperative (o peggio la stessa lingua) per tre diversi corsi, dovrebbero usare tre diversi paradigmi di programmazione. Un esempio è Java (imperativo), Prolog (dichiarativo) e Haskell (funzionale).

Per quanto riguarda il motivo per cui ciò accade, penso che sia una combinazione di (1) politica - i presidenti non sono di mentalità aperta o hanno benefici / sponsor personali e (2) pigrizia - i professori erano una volta studenti e insegnano tutto ciò che sanno o piacciono.


-1

Calvin college in Grand Rapids Mi. Una volta passati da Java a Python per le lezioni introduttive di programmazione, il professore incredulo ha menzionato un gruppo di noi verso la fine del suo semestre, "Molti di loro possono effettivamente programmare, è incredibile". Il suo stupore era in contrasto con le precedenti esperienze con Java. Questo non rende Java un linguaggio volgare, difficile da imparare da zero. Direi la stessa cosa su C, o C ++ o qualsiasi linguaggio che richiede una conoscenza intima degli schemi o dei tipi di allocazione della memoria.


1
Ehm, Python richiede una conoscenza intima dei tipi, proprio come le altre lingue che hai citato.
Billy ONeal,

Mi aspetto che le lingue con interpreti saranno molto più facili da imparare, poiché gli studenti possono ottenere feedback feedback per affermazione anziché compilazione per compilazione.
Kevin Cline,

@BillyONeal Mi hai letto male, il contesto era l'allocazione della memoria nella mia ultima frase. Devo ancora preoccuparmi della dimensione o del numero di elementi di uno str () o dict () o tuple () o list () o set () ... li uso semplicemente.
Ben DeMott,

@kevincline Grazie Kevin - questo era quello che stavo cercando di capire. A giudicare dai voti negativi ho bisogno di lavorare sulle mie capacità comunicative;)
Ben DeMott,

-2

Mi sono laureato in ingegneria dei sistemi informatici, quindi ho studiato assemblaggio, microprocessori, VHDL, quali sono le porte logiche e come crearne una infradito, ho studiato circuiti elettrici, amplificatori operazionali, filtri passa-basso, ampiezza la modulazione, costruito un circuito in un laboratorio che avrebbe suonato come una tastiera del telefono, incasinato con un analizzatore di logica, ha preso alcune lezioni di fisica. Sul lato Linux: prima avevo ricompilato un kernel, scritto un piccolo driver di dispositivo e un file system per i compiti.

Ma poi ho capito che mi piacciono molto di più le cose di alto livello. Preferisco Python rispetto a C. Mi piace C # e adoro il Garbage Collector. Mi piacciono la matematica, gli algoritmi e le strutture di dati, ma non sono un fan sfegatato di puntatori: posso rovinarli; Non voglio proprio.

Quindi, pensi che l'università dovrebbe insegnare più C, meno Java. Qualcun altro pensa che dovrebbero insegnare tutto in Scheme. Spolsky prenderà entrambi.

Sì, è vero che un titolo universitario è solo un pezzo di carta, ma "non lasciare che la scuola ostacoli la tua istruzione". C'è sempre Wikipedia, Stack Overflow, Coursera.org, ecc. Sembra che le università tradizionali diventeranno meno importanti.

Se potessi fare gli studi universitari dappertutto, allora sarei andato in una scuola diversa, non avrei studiato nessuna delle cose di ingegneria elettrica, ma piuttosto matematica, CS + minore in fisica e francese. Scratch francese; Avrei dovuto studiare all'estero in Svizzera e imparare 5 lingue naturali mentre ero lì. Vorrei anche tornare indietro e trovare una persona che mi ha convinto che dovevo assolutamente fare un po 'di intro alle lezioni di economia al college per sopravvivere nel mondo reale e picchiarlo in testa con la mia collezione di libri di Milton Friedman (le uniche poche libri sull'argomento di economia che ho letto che non fanno schifo). Inoltre non pagherei soldi per il libro Freakonomics 1 o un libro sulla lingua Perl.

Col senno di poi, avrei fatto molte cose in modo diverso. Tutto quello che posso fare ora, e te lo consiglio, è scegliere la tua avventura: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

Con il senno di poi avrei guadagnato 100 miliardi di dollari sul mercato azionario e lo avrei investito nella ricerca sul cancro, avrei assunto scienziati per liberare il mondo dai rifiuti di plastica; Avrei donato abbastanza denaro alla campagna di Ron Paul in modo che la guerra in Medio Oriente fosse finita 3 anni fa.

Riconosci ora che non avrai mai indietro il tuo tempo, quindi prova a spenderlo saggiamente.


Downvoter, per favore, elaborate.
Giobbe

-2

Qualche anno fa ho letto da qualche parte che, nel Regno Unito, la decisione di Java è stata presa per attirare più studenti nella programmazione. Apparentemente era più facile per il cervello a causa della mancanza di cattivi puntatori e gestione della memoria, ecc ... Immagino che questo sia il motivo per cui Python viene rapidamente adottato come nuovo "strumento di apprendimento". Sarei dell'opinione che il tuo tipico corso uni non ti farà diventare un programmatore. Tutto ciò che si intende fare è fornirti una certa quantità di conoscenza e prepararti alla programmazione. Il giorno in cui uno può definirsi un programmatore arriva generalmente un bel po 'di tempo dopo uni e quando arriva quel momento, puntatori, garbage collection e paradigmi di programmazione diversi da OOP, non dovrebbero essere un problema.


-2

Perché viene utilizzato Java?

Tre motivi:

  1. Java utilizza la sintassi in stile C. Molti programmatori lo conoscono, quindi riduce la curva di apprendimento.

  2. Il denaro è stato speso per commercializzare Java come moderno e alla moda. Ma rispetto a Lisp, Java vive nell'età della pietra.

  3. La JVM. JVM è l'unica cosa interessante di Java che è legittima, non solo pubblicità di marketing. Sebbene la JVM debba essere elogiata come piattaforma per l'esecuzione di programmi, non merita da sola l'esistenza del linguaggio Java. Puoi teoricamente e praticamente compilare molte lingue diverse per la JVM.


1
Benvenuto. Sembra che potrebbe essere il tuo primo post in Stack Exchange Programmers. Dai un'occhiata alla pagina faq programmers.stackexchange.com/faq per alcuni consigli sulla reputazione, porre e rispondere alle domande. Un punto chiave è che le risposte dovrebbero essere informative, non provocatorie. Se fai un'affermazione come Java è l'età della pietra e Lisp è moderno, spiega perché. Molti lettori potrebbero sapere che Lisp è stato specificato nel 1958 ed è leggermente più giovane di FORTRAN. Se vuoi dire che qualcosa su Java che è condiviso con FORTRAN o Algol ne guida il design e lo limita, descrivilo.
Sviluppatore:

-3

La tua domanda sta supportando i risultati di un'altra persona che ha scritto un documento in cui Java è così bello ma non abbastanza pesante per il calcolo scientifico. Penso che dovrebbe semplicemente usare Big Decimal con tutte le sue precise precisazioni, NAN ecc. E andare avanti.

Voglio vivere solo in un mondo di raccolta automatica dei rifiuti. È più sano, pulito, ordinato, estetico, previene sprechi di denaro in spese per la salute, è più desiderabile - non è necessario contrassegnare qualcosa come indesiderato - semplicemente dereferenziandolo o impostandolo su null o quando esco dall'ambito l'oggetto viene automaticamente taggato per garbage collection ..

Ok, ora sto parlando solo di Java, ma sarebbe molto utile se funzionasse anche nel vero scenario dell'immondizia. Java viene scritto una volta eseguito ovunque, il che è abbastanza buono per me da essere usato come lingua nelle scuole. Nessuna perdita di memoria e piacere ai programmatori felici che non vogliono perdere tempo a taggare ogni oggetto che usano e smettere di usare se stesso è una buona logica per conto di Java.

Java ha puntatori - bene li chiamiamo riferimenti. String s1 = "Hello"; String s2 = "Ciao"; String s3 = new String ("Hello");

s1 e s2 indicheranno lo stesso oggetto String - che è per riferimento s1 == s2, s1.equals (s3) ma s1 == s3 è falso perché s3 è un nuovo oggetto di riferimento - questa è l'aritmetica java dei riferimenti e I capisco tutto così dispiaciuto, non desidero essere etichettato come qualcuno che non comprende le sottostanti complessità dell'aritmetica del puntatore da C o C ++.


2
I riferimenti non sono puntatori. Non puoi usarli aritmeticamente e non puoi usarli per reinterpretare un pezzo di memoria a cui puntano. E, naturalmente, non importa quanto tu voglia vivere in un mondo di immondizia, il fatto è che il mondo non è un mondo di immondizia. Non sto dicendo che Java sia un brutto linguaggio o che le persone non dovrebbero usare Java. Se ti piace, usalo, ci sono cose fantastiche. Penso solo che sia inappropriato come lingua per principianti perché nasconde cose che sono essenziali da capire per i nuovi programmatori.
Billy ONeal,
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.