View Full Version : Evoluzione della programmazione: cosa scegliere?
rdefalco
01-11-2005, 22:45
Salve, volevo chiedere un consiglio su quale linguaggio di programmazione scegliere per non "restare indietro". Non ho esigenze di programmazione particolari.
Conosco bene (causa utilizzo per qualche anno) Visual Basic 5/6, di conseguenza conosco anche ASP (classic) e logicamente pensavo di imparare .NET che però mi consentirà di programmare sempre e solo per Windows.
Intanto all'Università ho imparato Java di cui però non sono sicuro dei limiti (lentezza della Virtual Machine in quanto tale).
Però poi ho sentito parlare pure di MONO che servirebbe a far girare la piattaforma .NET sotto Linux :confused:
Voi cosa preferite???
Fenomeno85
02-11-2005, 09:14
quando avrò tempo voglio impararare linguaggi che mi ha fatto vedere un mio amico che sono: ocamel lisp ;)
~§~ Sempre E Solo Lei ~§~
cdimauro
03-11-2005, 13:38
x rdefalco: http://www.hwupgrade.it/forum/showthread.php?t=1052470 Leggi il mio ultimo messaggio. :)
DanieleC88
03-11-2005, 16:35
x rdefalco: http://www.hwupgrade.it/forum/showthread.php?t=1052470 Leggi il mio ultimo messaggio. :)
Python, ci avrei scommesso... :D
Parlo da profano, anzi, parlo per sentito dire: Python e C#, a detta di, rispettivamente, cdimauro e VICIUS, sono linguaggi straordinari, ma non li ho mai provati, purtroppo. Prima o poi dovrò provare questo Python. Mi intriga l'idea di separare i blocchi con l'indentazione. :)
Fenomeno85
03-11-2005, 18:03
nessuno che prende in considerazione i linguaggi che ho postato :O
~§~ Sempre E Solo Lei ~§~
nessuno che prende in considerazione i linguaggi che ho postato :O
Io ocaml ho tentato di impararlo tempo fa, ma dopo un pò di studio credevo di essere perso in un universo allucinatorio. Dovrei riprenderlo e dargli altre possibilità, al tempo non ero ancora pronto si vede :)
Oltre a C# anche Ruby merita di essere imprato.
ciao ;)
jappilas
03-11-2005, 19:59
Salve, volevo chiedere un consiglio su quale linguaggio di programmazione scegliere per non "restare indietro".
imho se vuoi portare le tue comptenze di programmazione a un livello superiore, ti può convenire far pratica su C, C++, java, ma soprattutto studiare testi di SW engineering, design pattern OO, code refactoring, metodologie di agile development...
Intanto all'Università ho imparato Java di cui però non sono sicuro dei limiti (lentezza della Virtual Machine in quanto tale).
java si dovrebbe poter anche compilare (http://gcc.gnu.org/java/) ;)
Però poi ho sentito parlare pure di MONO che servirebbe a far girare la piattaforma .NET sotto Linux :confused:
MONO è essenzialmente una implementazione portabile dell' interprete C sharp e delle librerie di classi ;)
rdefalco
03-11-2005, 23:29
Thanks jappilas in effetti sono all'univ quindi ingegneria del software e altre nozioni teoriche sono già in programma. Il problema è che per i prossimi 2 anni dovrò comunque avere a che fare con Java (univ: algoritmi), C (univ: system call in linux), PHP (univ: tecnologie di sviluppo web) e ASP (per dei siti che gestisco).
Quindi sono un po' confuso... :fagiano:
Vuoi qualcosa che puoi sfruttare seriamente nel mondo del lavoro? Nell'ordine:
1 - Java Enterprise (non il java che ti fanno all'uni, quello non serve a nessuno, è solo la base per il resto...)
2 - Sql/pl-sql - oracle
3 - .Net
io mi sto per laureare in informatica e stavo anche io cercando un linguaggio di programmazione da imparare BENE. il livello offerto dalle universita' e' fin troppo basso per il mondo del lavoro.
la mia scelta e' ricaduta su Java per vari motivi:
1. posso creare programmi per qualsiasi sistema operativo. infatti odio creare un programma e poi non poterlo usare su vari sistemi operativi!
2. la programmazione OO e' veramente bella ;)
ed altri [credo lol].
mho se vuoi portare le tue comptenze di programmazione a un livello superiore, ti può convenire far pratica su C, C++, java, ma soprattutto studiare testi di SW engineering, design pattern OO, code refactoring, metodologie di agile development...
sagge parole! quando avro' un po di cash la prima cosa che faro' e' prendermi libri su questi argomenti
cdimauro
04-11-2005, 09:36
nessuno che prende in considerazione i linguaggi che ho postato :O
Vade retro LISP :D
Quanto a OCaml è interessante come linguaggio, ma ho trovato la sua sintassi poco leggibile in alcuni casi (vedi operatore di somma diverso per interi e float, ad esempio, o l'uso di ";;" ).
cdimauro
04-11-2005, 09:38
la mia scelta e' ricaduta su Java per vari motivi:
1. posso creare programmi per qualsiasi sistema operativo. infatti odio creare un programma e poi non poterlo usare su vari sistemi operativi!
Se ti fai un giretto, vedrai che Python è molto più supportato rispetto a Java: lo trovi anche per s.o. di cui pochi conoscono l'esistenza. :p
Vade retro LISP :D
Quanto a OCaml è interessante come linguaggio, ma ho trovato la sua sintassi poco leggibile in alcuni casi (vedi operatore di somma diverso per interi e float, ad esempio, o l'uso di ";;" ).
Gli operatori distinti per tipi di dato diversi sono necessari per una caratteristica che ben pochi linguaggi hanno, cioè la type inference.
Cos'hai contro ;; ?? :)
cdimauro
06-11-2005, 07:28
Gli operatori distinti per tipi di dato diversi sono necessari per una caratteristica che ben pochi linguaggi hanno, cioè la type inference.
Più che caratteristica, è una necessità. ;)
Cos'hai contro ;; ?? :)
Lo trovo troppo confusionario, visto che esiste anche il ; per separare le istruzioni (e scartarne il risultato in favore dell'ultimo).
E' chiaro che è una questione di gusti. :p
rdefalco
06-11-2005, 08:57
Ragazzi scusate l'ignoranza ma cos'è la type inference? :confused: :help:
if (google==my-friend) {
Type inference is the act of determining the type of an expression that isn’t explicitly typed
}
cioè posso dichiarare una variabile "generica" e assegnare un'espressione che verrà giudicata con il tipo di dati, giusto?
Però così facendo potrei anche incorrere in errori: ammettiamo che sto usando tipi "int" e voglio così. Poi per sbaglio divido uno di questi per una variabile erroneamente impostata su double, il risultato sarà un double probabilmente. Ma magari io volevo un int. In questo caso sarebbe molto auspicabile un "type mismatch" dal compilatore, almeno trovo l'errore! :mbe:
jappilas
06-11-2005, 11:24
Ragazzi scusate l'ignoranza ma cos'è la type inference? :confused: :help:
if (google==my-friend) {
Type inference is the act of determining the type of an expression that isn’t explicitly typed
}
cioè posso dichiarare una variabile "generica" e assegnare un'espressione che verrà giudicata con il tipo di dati, giusto?
Però così facendo potrei anche incorrere in errori: ammettiamo che sto usando tipi "int" e voglio così. Poi per sbaglio divido uno di questi per una variabile erroneamente impostata su double, il risultato sarà un double probabilmente. Ma magari io volevo un int. In questo caso sarebbe molto auspicabile un "type mismatch" dal compilatore, almeno trovo l'errore! :mbe:
ti potrei consigliare la lettura di due capitoli interessanti di wikipedia (purtroppo in inglese ma comprensibile):
Dynamic Typing (http://en.wikipedia.org/wiki/Dynamic_typing)
Type Safety (http://en.wikipedia.org/wiki/Type_safety)
nel tuo esempio, c'è un "punto debole": il fatto che dichiari variabili int mostra che stai pensando in C, ma al C il discorso sulla type inference non si applica,
C è un linguaggio NON type safe, staticamente tipato, privo di tipizzazione forte, e il compilatore non fa type inference, quindi il programmatore è libero di fare sulle variabili "cose" che esulano dalla semantica del linguaggio o degli operatori stessi, ma questa libertà è compensata da un rischio maggiore di introdurre bug (anche subdoli) - nel tuo caso probabilmente ti toccherebbe fare qualche casting esplicito,
ma in caso il linguaggio in cui implementi la divisione, preveda che l' operatore restituisca (per sua semantica) un float, allora il risultato sarà float, assegnato per inferenza...
meccanismi di tipizzazione caratteristici di altri linguaggi (che mi sembrano correlati alle semantiche dal linguggio stesso esposte), ho l' impressione che siano meglio acquisiti "chiudendo nel cassetto" temporaneamente gli schemi mentali abituali, se si sono modellati sul C e sulla simpatica anarchia che consente...
rdefalco
06-11-2005, 15:13
In realtà il mio esempio lo riferivo al Java... il problema è che ho in testa un gran casino in quanto a tipi: per lavoro ho usato ASP (in cui non si dichiara il tipo di dati) poi a scuola C e Java... ormai non capisco niente, ogni mese devo dedicarmi ad un altro linguaggio... :doh:
Come stanno le cose mi sa che mi conviene aspettare a dedicarmi qualcosa altrimenti la simpatica anarchia me la ritroverò nel cervello... altro che schemi mentali...
Ah all'Università inizierò fra qualche mese a studiare anche PHP e J2EE :read:
E comunque leggerò con interesse quei due articoli...
lnessuno
06-11-2005, 21:22
per lavoro uso abitualmente asp e php, e adesso mi sono messo ad imparare il python... che trovo davvero carino (ma fare applicazioni grafiche con le wxpython è un mezzo casino :D, e non sono ancora riuscito a trovare una documentazione decente, non come quella fantastica per il php)
sennò puoi imparare labview... è un pò strano come linguaggio di programmazione e inutile per la maggior parte dei lavori, però ci sono buone possibilità che per lavoro io debba prendere una certificazione per questo linguaggio... :D
es. di programma labview:
http://www2.geo.uib.no/geochemistry-lab/IATROSCAN/LabVIEW-1.jpg
btw labview è un linguaggio nato per applicazioni di ricerca e industriali... misure di frequenze e cose del genere :p
Fenomeno85
07-11-2005, 13:19
per lavoro uso abitualmente asp e php, e adesso mi sono messo ad imparare il python... che trovo davvero carino (ma fare applicazioni grafiche con le wxpython è un mezzo casino :D, e non sono ancora riuscito a trovare una documentazione decente, non come quella fantastica per il php)
sennò puoi imparare labview... è un pò strano come linguaggio di programmazione e inutile per la maggior parte dei lavori, però ci sono buone possibilità che per lavoro io debba prendere una certificazione per questo linguaggio... :D
es. di programma labview:
http://www2.geo.uib.no/geochemistry-lab/IATROSCAN/LabVIEW-1.jpg
btw labview è un linguaggio nato per applicazioni di ricerca e industriali... misure di frequenze e cose del genere :p
si bhe noi all'università usiamo vari programmi che servono a interfacciarsi su strumenti della texas instruments ;)
~§~ Sempre E Solo Lei ~§~
lnessuno
07-11-2005, 18:04
si bhe noi all'università usiamo vari programmi che servono a interfacciarsi su strumenti della texas instruments ;)
~§~ Sempre E Solo Lei ~§~
a dire il vero non li conosco :stordita:
sono simili a labview o sono a codice? :)
cioè posso dichiarare una variabile "generica" e assegnare un'espressione che verrà giudicata con il tipo di dati, giusto?
Però così facendo potrei anche incorrere in errori: ammettiamo che sto usando tipi "int" e voglio così. Poi per sbaglio divido uno di questi per una variabile erroneamente impostata su double, il risultato sarà un double probabilmente. Ma magari io volevo un int. In questo caso sarebbe molto auspicabile un "type mismatch" dal compilatore, almeno trovo l'errore! :mbe:
No non è proprio così. La type inference serve proprio per evitare questo tipo di comportamenti possibilmente ambigui.
Ti scrivo una funzione in Ocaml che somma due valori.
let sum x y =
x + y
;;
La macchina virtuale deduce da sola che x e y sono due interi perchè all'interno della funzione hai usato il segno +; se avessi usato il segno +. sarebbero stati individuati come float.
Più chiaro? Questo ovviamente è un esempio banale.
da poco è uscito il framework sdk .net 2.0 e i prodotti microsoft della serie express (visual C#, java, basic, c++) che sono gratis per un anno, oltre a sql server express che, se non ho capito male, dovrebbe rimanere gratis x sempre. E' anche uscito SharpDevelop 2 sempre per .net.
Qualcuno sa quando il framework sdk .net 2.0 esce in italiano?
L'altro giorno ho invece installato ActivePython + WxPython + Boa Constructor: interessante :p
rdefalco
09-11-2005, 17:35
Per quanto riguarda la type inference ho capito, in pratica si usano operatori diversi, così è facile!!!
Se non sbaglio SQL Express è la nuova denominazione per il MSDE (Microsoft SQL Desktop Edition) che sempre gratuito era ed è raccomandato per un numero di client non superiore a 5.
Serve a Microsoft per sganciarsi dalle applicazioni con vetusti e inaffidabili database Access in favore di DB MSSQL che nel caso di espansioni delle aziende garantiscono l'acquisto di licenze Microsoft SQL Server. Visto che il codice per usarlo è uguale.
/\/\@®¢Ø
09-11-2005, 22:09
Gli operatori distinti per tipi di dato diversi sono necessari per una caratteristica che ben pochi linguaggi hanno, cioè la type inference.
Non e' necessario.
Altri linguaggi, come Haskell, permettono di definire 'classi' di tipi, per cui si possono usare gli stessi operatori per tipi differenti.
Ad esempio si puo' dire che la classe "Num" e' la classe di tutti i tipi per cui sono definite le operazioni +,-,* e negazione.
Una volta che per un tipo ho definito queste tre operazioni, qualsiasi funzione definita sulla classe Num e' valida per quel tipo.
Ad esempio posso definire la somma degli elementi di una lista
sum [x] = x
sum (x:xs) = x + sum xs
e questa funzionera' per interi, floating point, complessi etc.
Ovviamente finche' non uso operazioni specifiche di un tipo il compilatore non sapra' il tipo reale.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.