Giusto per completare, uno dei modelli migliori di programmazione ad oggetti fortemente tipizzata è a mio parere quello offerto da Eiffel.
Giusto per completare, uno dei modelli migliori di programmazione ad oggetti fortemente tipizzata è a mio parere quello offerto da Eiffel.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
E' a mio parere uno dei linguaggi meglio pensati, ed infatti negli ultimi anni un sacco di linguaggi hanno tratto idee da esso, primo fra tutti il design by contract che negli ultimi 3-4 anni sembra la cosa più innovativa del mondo...
Peccato che nessuno abbia pensato a copiare anche l'ereditarietà multipla a la eiffel...
Mi dispiace solo che abbia avuto così poca diffusione per la sintassi non C-like e per l'elevato costo dell'implementazione per singola licenza che è perdurata fino all'anno scorso e ha contribuito a limitarne ancora la diffusione...
Tra l'altro la libreria standard è pure abbastanza fornita...
Ti consiglio vivamente di approfondire un po', almeno per cultura. Ovviamente se ne hai il tempo e la possibilità![]()
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
Ovvio che mi riferivo al c++. Inoltre in merito non ho detto che l'eredità multipla sia una buona cosa. Solo che aveva un modo diverso di implementare la oop cosa che tu, in un precedente intervento, condannavi nel php.
Come ho detto nel post precedente penso che per cominciare possa andar bene. Ad un novellino poco importi se le funzioni principali siano scritte in procedurale.
E comunque man mano lo stanno trasformando. Basta pensare a PDO e l'oggetto date.
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
Il punto è che linguaggi poco coerenti mettono i bastoni tra le ruote (ed è lo stesso motivo per cui anche C++ è un pessimo linguaggio per iniziare). PHP non va bene per imparare la OOP (né nient'altro, a mio avviso) perché è schizofrenico e non coerente; appena credi di aver imparato una regola, c'è subito l'eccezione. Nulla di PHP è "armonico" con il resto del linguaggio o della libreria, per cui si perde più tempo ad imparare le eccezioni che a capire i concetti che ci dovrebbero stare dietro. Quando di rado mi capita di dover scrivere codice PHP, ogni momento c'è da mettersi le mani nei capelli, perché nulla si comporta in maniera prevedibile - non è possibile formarsi un modello mentale coerente delle idee che stanno dietro il linguaggio perché non ci sono; e quello che è peggio, PHP è pensato per segnalare gli errori in maniera discutibile e andare avanti qualunque stupidaggine scrivi, per cui ti rende inutilmente difficile fare la cosa giusta.
Se io sono un principiante, quello che mi serve è un linguaggio in cui la sintassi sia logica, coerente e "mappi" bene le idee che ci stanno dietro; ovvero, deve essere facile formarsi un "modello mentale" giusto di come funziona il linguaggio. In altri termini, il linguaggio mi deve aiutare a capire le idee che ci sono dietro, non mi deve ostacolare perché è scritto da mentecatti e ad ogni angolo c'è una eccezione alle regole viste finora. Se un linguaggio è logico, intuisco facilmente (almeno a livello concettuale) la sintassi che ancora non conosco, e al momento di provarla l'"educated guess" logico funziona (rinforzo positivo).
Allo stesso tempo, se sto facendo una cavolata me lo deve dire subito, per evitare che io vada avanti ad usare paradigmi sbagliati, senza cercare di dare un senso a qualunque input che io ci butti dentro (rinforzo negativo) (e questo è un altro motivo per cui usare linguaggi con "undefined behavior" come il C o il C++ come primo linguaggio è una scelta discutibile).
Il fatto che la libreria standard sia uno schifo è importantissimo, visto che la libreria standard, oltre che a fornirti roba da usare, serve ad insegnarti come si dovrebbero strutturare i programmi nel linguaggio in questione, quali sono le convenzioni, eccetera.
Se la libreria standard è un accrocchio dietro l'altro, strutturerai il tuo codice alla stessa maniera, o in alternativa, perderai metà del tempo dietro alle limitazioni dell'una o dell'altra funzione di libreria che fa la stessa cosa di trenta altre simili bacate in maniera leggermente diverse. Se la libreria standard incoraggia pratiche demenziali e non vedi altro che schifezze, è ovvio che non ti immagini nemmeno che si possa scrivere qualcosa di decente; un paio di esempi:
- ordinare una lista: ci sono ottocento funzioni diverse (citate nell'articolo) a seconda della micro-variante che ti interessa; un principiante vede questa cosa e pensa che l'unica maniera di risolvere il problema in maniera leggermente diversa sia il copia-incolla, senza immaginare che in effetti ti basta un solo sort che consenta di specificare una operazione di confronto custom;
- l'SQL injection è un non-problema a cui il core language non ha dato subito come soluzione l'unica cosa sensata - le query parametriche - ma i magic_quotes_gpc
o mille funzioni di escaping balengo, una più rotta dell'altra
^2); e la gente "cresce" avendo paura dell'input esterno e pensando che "ah che problema sanitizzare gli input"
- le strutture dati. PHP non ha strutture dati, ha solo un array balengo che non è un array; come puoi immaginarti che un array, una hashtable, una mappa ordinata, una deque, ... sono strutture diverse da usare in situazioni diverse se cresci alla scuola del "c'è una sola struttura dati"?
- in generale, come detto più volte, il 90% della libreria standard è procedurale, con una funzione (bacata) per ogni micro-cosa; questo non ti incoraggia né ad approfondire il senso della OOP, né a ragionare a blocchi riutilizzabili e combinabili, visto che quello che vedi sono una miriade di "scatole nere" incompatibili per fare ogni cosettina.
Ah, PDO o l'oggetto Date non sono trionfi, sono funzionalità primitive di un qualunque linguaggio di scripting con pretesa di lavorare con il web.
Ultima modifica di MItaly; 31-01-2014 a 00:31
Amaro C++, il gusto pieno dell'undefined behavior.
Già detto prima. PHP oggi ha senso di esistere per mantenere progetti vecchi e per quando ti viene imposto dalla piattaforma o dal cliente, ciò non toglie che per imparare o per la realizzazione di nuovi progetti si possano usare altri linguaggi.
Licenza a singolo programmatore? Non mi pare...
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
http://www.apmshop.it/offerta/Microsoft/9ED-00131/70117
si parla di un solo utente. ovviamente ho preso la versione premium. ci sono svariate versioni per Eiffel?
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
(comunque ho guardato un po' Eiffel e mi pare abbia idee interessanti, ma sia un po' tanto ingessatoa proposito di "linguaggi che piacciono a scara95"
sto leggendo di Lua e mi gusta abbastanza)
Amaro C++, il gusto pieno dell'undefined behavior.
Un po' ingessato? Forse, ma è comunque una delle migliori implementazioni OO a mio parere...
Direi il mio linguaggio preferitoa proposito di "linguaggi che piacciono a scara95"sto leggendo di Lua e mi gusta abbastanza)
@ciro78 le versioni per le diverse piattaforme (linux, osx, windows, .NET e boh, è da un po' che non mi tengo informato, anche perché pur essendo un ottimo linguaggio non lo userei perché ha poca diffusione e il supporto di una sola compagnia (anche se il supporto ce l'ha dal '65)) e quella con SCOOP che dovrebbe essere a parte se non sbaglio.
Comunque se permetti Visual Studio offre un ecosistema di linguaggi (almeno 3 ufficialmente supportati), Eiffel uno solo, i programmi scritti con Visual Studio e i linguaggi direttamente supportati con le librerie .NET anche se lo paghi 3 volte andrà solo su windows, Eiffel è portabile ad altre piattaforme senza cambiamenti, ...
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
Si vero che .net si rivolge praticamente solo a Windows anche se ho sentito di librerie come mono che consentono di utilizzare le applicazioni anche su Linux. No so se poi è il caso di fare aggiustamenti ma direi che è una buona cosa.
Dallo scenario resterebbe fuori apple ovviamente.
Una domanda: come venite a conoscenza di questi linguaggi di programmazione? Frequentate forum specifici? Ovviamente anche in pvt va bene.
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.