Miglior linguaggio di programmazione?

Kratos

Con me cascate male! >_
Ultimamente mi stavo dedicando allo studio del Python... però mi chiedevo è ottimo come linguaggio di programmazione? O ce ne sono di meglio?
 

Maze

TypoMzn
Wiki
Non essere così cattivo, se è alle prime armi è normale porsi certe domande u.u

Comunque, non esiste un miglior linguaggio di programmazione in assoluto: dipende dal contesto. Potrei farti esempi, ma non credo capiresti.

Per quanto riguarda il python, come tutti i linguaggi di alto livello, è molto utile all'inizio, per capire i concetti di base della programmazione, senza avere troppe rotture di gestione di memoria dinamica, tipi delle variabili ecc; però quando poi si va a imparare il C, che tanto alla fine da qualche parte serve sempre, son dolori.
 

Gkx

Admin
python è un ottimo linguaggio di programmazione multi-purpose, ottimo per imparare a programmare e sufficientemente potente (e dotato di librerie) da poter essere utilizzato in praticamente qualsiasi àmbito. se sei alle prime armi (ma anche a un livello più avanzato) è probabilmente la scelta migliore.

non capisco invece perché c debba per forza "servire sempre da qualche parte", ma mi sa che abbiamo già fatto questo discorso...
 

Kratos

Con me cascate male! >_
Ok, grazie a tutti, allora oer ora studierò il python, successivamente il c++

Ah, lo sto studiando da solo (ti pare che in seconda media ci fanno studiare certe cose?)
 

DWarez

Rappresentante di classe
 ottimo per imparare a programmare

non capisco invece perché c debba per forza "servire sempre da qualche parte", ma mi sa che abbiamo già fatto questo discorso...
Non sono d'accordo su questi due punti:

1- Python ha una sintassi molto versatile e leggera rispetto ad altri linguaggi sopracitati, perciò secondo me si potrebbe prendere qualche cattiva abitudine nella stesura/struttura del programma;

2- Vabbè da C derivano parecchie cose, conoscerlo di certo non è un male :v

Comunque Python rimane un ottimo linguaggio, anche se non lo userei mai per addentrarmi nel mondo della programmazione.
 

Gkx

Admin
1- Python ha una sintassi molto versatile e leggera rispetto ad altri linguaggi sopracitati, perciò secondo me si potrebbe prendere qualche cattiva abitudine nella stesura/struttura del programma;
ma non è per niente vero, anzi python ha una delle sintassi più "rigide" che ci siano (pensa solo all'indentazione obbligatoria), e il motivo è proprio l'opposto di quello che indichi: farti prendere delle buone abitudini e rendere il tuo codice uniforme e leggibile. non so cosa potresti pensare di perl o ruby...

2- Vabbè da C derivano parecchie cose, conoscerlo di certo non è un male :v
non è certo un male ma continuo a credere che ci siano scelte migliori nello stesso àmbito. parliamo comunque di un linguaggio nato nel 1969: l'informatica di oggi è quattro volte più vecchia di quanto fosse quando C è stato inventato...

Comunque Python rimane un ottimo linguaggio, anche se non lo userei mai per addentrarmi nel mondo della programmazione.
cosa consiglieresti?
 
Ultima modifica di un moderatore:

DWarez

Rappresentante di classe
Bah, ho confrontato la sintassi con l'unico linguaggio che (più o meno) studio e conosco e mi è sembrato molto semplice rispetto a quella del C. Poi boh, evidentemente non lo posso giudicare se so a mala pena le basi.
 

Consiglierei il C, però non ti piace  :P
 

Gkx

Admin
sì ma non capisco qual è il problema nella semplicità della sintassi... è meglio che sia complicata?
 

Dustdas

Cassonetto differenziato
Sinceramente io ho imparato a programmare cominciando con il C e sinceramente a posteriori direi che per iniziare il Python forse è migliore, ti abitua a usare una certa struttura nel linguaggio ma è un pò meno complesso del C nell'insieme, anche solo per la gestione della memoria ma anche per la programmazione funzionale, quindi mi sembra un ottimo punto di partenza e non vedo poi tutta questa difficoltà a imparare prima quello e poi passare al C o ad altro, poi boh, alla fine è uguale, io ho iniziato col C, quindi uno può benissimo iniziare anche con quello, non è un problema. E poi boh non capisco quest'idea che nessuno debba mai partire dai linguaggi OOP per imparare, secondo me ha i suoi vantaggi.
 

Gkx

Admin
E poi boh non capisco quest'idea che nessuno debba mai partire dai linguaggi OOP per imparare, secondo me ha i suoi vantaggi.
boh, secondo me insegnare subito l'OOP ha poco senso, perché è un paradigma adatto a cose più strutturate e complesse di quelle che si fanno all'inizio, e poi (specialmente con java) uno si fa l'idea che siano fondamentali per qualsiasi cosa, dando origine ad abomini tipo "AbstractSingletonProxyFactoryBean". d'altronde il bello di python è che non è assolutamente necessario utilizzare gli oggetti e può essere tranquillamente usato in modo imperativo.

sarebbe anche interessante vedere se un "profano" di programmazione è, come penso, avantaggiato nell'imparare per prima cosa un linguaggio puramente funzionale. per esperienza (puramente aneddotale) il problema dell'imparare i linguaggi funzionali è che richiedono un modo di ragionare completamente diverso, e può essere che chi non ha conoscenze di linguaggi "classici" possa trovarsi avantaggiato (specialmente se ha conoscenze matematiche).
 

Dustdas

Cassonetto differenziato
boh, secondo me insegnare subito l'OOP ha poco senso, perché è un paradigma adatto a cose più strutturate e complesse di quelle che si fanno all'inizio, e poi (specialmente con java) uno si fa l'idea che siano fondamentali per qualsiasi cosa, dando origine ad abomini tipo "AbstractSingletonProxyFactoryBean". d'altronde il bello di python è che non è assolutamente necessario utilizzare gli oggetti e può essere tranquillamente usato in modo imperativo.

sarebbe anche interessante vedere se un "profano" di programmazione è, come penso, avantaggiato nell'imparare per prima cosa un linguaggio puramente funzionale. per esperienza (puramente aneddotale) il problema dell'imparare i linguaggi funzionali è che richiedono un modo di ragionare completamente diverso, e può essere che chi non ha conoscenze di linguaggi "classici" possa trovarsi avantaggiato (specialmente se ha conoscenze matematiche).
Si forse è vero, conosco gente che ha imparato con java ed è esattamente così che ragiona, però se si è indirizzati a comprendere che gli oggetti non sono strutture fondamentali per tutto e soprattutto se si impara con un linguaggio come python che, come dicevi, non è necessariamente finalizzato alla programmazione a oggetti, ci possono essere dei vantaggi, invece magari di dover cambiare linguaggio per passare dalla programmazione imperativa all'OOP, poi non so.

Il discorso sulla programmazione funzionale è interessante, ma purtroppo non conosco nessuno che ha iniziato con un linguaggio funzionale.
 

Iro

Amministratore di condominio
Il punto è molto semplice: se vuoi fare il computer scientist, bisogna sapere il C. Non esiste sulla faccia della terra un informatico degno di questo nome che non sappia gestire roba come puntatori, allocazioni dinamiche e tutte quelle cose simpatiche che molti linguaggi fanno da soli.

Se non vuoi fare l'informatico, ma ti piace o ti serve sapere qualcosa di programmazione, allora inizi col Python
 

Gkx

Admin
conoscere il c ≠ iniziare col c. (mi sa che abbiamo già fatto questo discorso). tra l'altro puntatori e allocazioni dinamiche non sono certamente feature esclusive di c, e qui si chiedeva il miglior linguaggio per iniziare, non quello per diventare computer scientist...

poi vabbè, conosco gente (matematici) che si occupa di teoria della computazione senza saper programmare, e probabilmente sono i più computer scientist di tutti
 

Iro

Amministratore di condominio
conoscere il c ≠ iniziare col c.
impara prima python\java\etc, poi prova ad imparare il c e vedi come piangi  :D  

tra l'altro puntatori e allocazioni dinamiche non sono certamente feature esclusive di c
ma è sicuramente l'unico linguaggio che le usa e che vale la pena imparare come primo. ci sarà un motivo se il c ha quarant'anni ed è ancora usatissimo e spesso consigliato come primo linguaggio da chiunque ne capisca un minimo di computer, no?

conosco gente (matematici) che si occupa di teoria della computazione
se è per questo la cattedra di informatica teorica all'unina c'è l'ha uno laureato in filosofia alla columbia, e precedentemente ce l'aveva un fisico cibernetico di fama internazionale. che c'entra?
 
Ultima modifica di un moderatore:

Gkx

Admin
impara prima python\java\etc, poi prova ad imparare il c e vedi come piangi  :D
ma perché, scusa? secondo me piangi di più a imparare subito il c, rispetto a quando conosci già bene un altro linguaggio di programmazione... perché il percorso dev'essere necessariamente basso livello -> alto livello? allora impariamoci tutti assembly per primo, così con il c c'è da piangere di meno...

ma è sicuramente l'unico linguaggio che le usa e che vale la pena imparare come primo. ci sarà un motivo se il c ha quarant'anni ed è ancora usatissimo e spesso consigliato come primo linguaggio da chiunque ne capisca un minimo di computer, no?
anche ammettendo che sia meglio insegnare prima un linguaggio di basso livello (cosa che, ripeto, non mi trova d'accordo), per esempio un rust o un go, pur non supportati da altrettanta popolarità, permettono di capire "il computer" altrettanto bene, e senza i problemi di c. ecco l'esperienza di un professore che ha adottato rust nel corso di operating systems alla university of virginia.

se è per questo la cattedra di informatica teorica all'unina c'è l'ha uno laureato in filosofia alla columbia, e precedentemente ce l'aveva un fisico cibernetico di fama internazionale. che c'entra?
significa che dire "se vuoi fare il computer scientist devi sapere il c" ha poco senso quando la CS è una materia così vasta che per alcuni ambiti non è neanche necessario saper programmare.
 
Ultima modifica di un moderatore:

Iro

Amministratore di condominio
ma perché, scusa?
per lo stesso motivo per cui è più semplice passare dal cambio manuale a quello sequenziale che non il contrario.

anche ammettendo che sia meglio insegnare prima un linguaggio di basso livello (cosa che, ripeto, non mi trova d'accordo)
questa è una tua personalissima opinione che non ha 'sto gran seguito all'interno della comunità informatica mondiale, poi..

per esempio un rust o un go, pur non supportati da altrettanta popolarità, permettono di capire "il computer" altrettanto bene, e senza i problemi di c.
quindi in capa a te all'università, cioè in un posto dove il tempo scarseggia, come primo linguaggio bisognerebbe insegnare linguaggi usciti l'anno scorso e in beta oppure strambi come rust o go? solo perché UN tipo ha preferito qualcosa al c? un tipo che gestisce un corso di SISTEMI OPERATIVI, che è roba per gente che si presume sappia programmare?

ma sei serio?

significa che dire "se vuoi fare il computer scientist devi sapere il c" ha poco senso quando la CS è una materia così vasta che per alcuni ambiti non è neanche necessario saper programmare. 
sei liberissimo di laurearti in matematica e poi trovarti per caso ad approfondire campi legati alla computer science, ma non esiste sulla faccia della terra che ti danno una laurea in informatica e non sai scrivere in c, punto.

peggio di parlare con un muro, oh. da che mondo è mondo il c è l'unico linguaggio che dura nel tempo e che viene sempre nominato come buon inizio, non ti sei mai chiesto il perché?
 
Ultima modifica di un moderatore:

Gkx

Admin
per lo stesso motivo per cui è più semplice passare dal cambio manuale a quello sequenziale che non il contrario.
per lo stesso ragionamento è molto più facile imparare a guidare col cambio automatico che con quello manuale

questa è una tua personalissima opinione che non ha 'sto gran seguito all'interno della comunità informatica mondiale, poi..
perché immagino che tu rappresenti la comunità informatica mondiale... comunque dato che a sparare link a caso per supportare la propria tesi siamo bravi tutti, ecco i miei

quindi in capa a te all'università, cioè in un posto dove il tempo scarseggia, come primo linguaggio bisognerebbe insegnare linguaggi usciti l'anno scorso e in beta oppure strambi come rust o go? solo perché UN tipo ha preferito qualcosa al c? un tipo che gestisce un corso di SISTEMI OPERATIVI, che è roba per gente che si presume sappia programmare?

ma sei serio?
veramente ho solo obiettato che c non è certo l'unico linguaggio che permette la programmazione a basso livello, e che le basi dell'informatica si possono capire anche con linguaggi più moderni (peraltro go è ampiamente stabile e utilizzato e gestisce milioni di richieste al minuto sui server di google e cloudflare). il link è riportato solo per completezza (il corso non era indirizzato a principianti) perché contiene una motivazione molto approfondita sulla scelta di rust e sulla non-scelta di c, che ti invito a leggere.

sei liberissimo di laurearti in matematica e poi trovarti per caso ad approfondire campi legati alla computer science, ma non esiste sulla faccia della terra che ti danno una laurea in informatica e non sai scrivere in c, punto.
ne conosco almeno due (uno attualmente fa le robe con agda in un'università svedese) che non lo sanno scrivere (anche se ovviamente lo sanno leggere). ripeto, dipende dagli ambiti in cui operi...

peggio di parlare con un muro, oh. da che mondo è mondo il c è l'unico linguaggio che dura nel tempo e che viene sempre nominato come buon inizio, non ti sei mai chiesto il perché?
è ovvio che essendo a oggi uno dei linguaggi più popolari sia tra i più nominati per iniziare (anche perché molti concepiscono solo l'esistenza della triade c/c++/java, e altri - mi sembri un buon esempio - sono convinti che se non ci sono dei puntatori non sia vera programmazione). non significa che sia sempre ed esclusivamente la scelta didattica migliore, dato quanto è cambiata l'informatica e quanti strumenti migliori abbiamo a disposizione rispetto agli anni in cui c è stato creato. e poi mi sembra che si crei un circolo vizioso: c è rilevante perché tutti lo insegnano perché è rilevante.
 

Iro

Amministratore di condominio
per lo stesso ragionamento è molto più facile imparare a guidare col cambio automatico che con quello manuale
se vuoi guidare su strade a venti corsie, ok. se vuoi fare il pilota, forse dovresti imparare da quello manuale, no?

perché immagino che tu rappresenti la comunità informatica mondiale... comunque dato che a sparare link a caso per supportare la propria tesi siamo bravi tutti, [/size]ecco [/size]i [/size]miei
i MIEI link portano le opinioni di gente del calibro di spolsky, linus torvalds o dell'utenza di stackoverflow, il che sarebbe tutto dire. i tuoi parlano di come python sia migliore per cominciare. opinabile, in alcuni casi potrei trovarmi d'accordo certo (come ho già detto), ma poi appena si approfondisce un po' la programmazione si inizia a piangere perché poi roba come python o ruby guarda caso si basano sul c.

veramente ho solo obiettato che c non è certo l'unico linguaggio che permette la programmazione a basso livello, e che le basi dell'informatica si possono capire anche con linguaggi più moderni
e io ripeto che C è l'unico linguaggio di medio livello che vale ancora la pena imparare fra i primi.

peraltro go è ampiamente stabile e utilizzato e gestisce milioni di richieste al minuto sui server di google e cloudflare)
anche il c#, perché non iniziare con quello? go è pure strano come paradigma, non è roba da principianti

ne conosco almeno due (uno attualmente fa le robe con agda in un'università svedese) che non lo sanno scrivere (anche se ovviamente lo sanno leggere). ripeto, dipende dagli ambiti in cui operi...
neanche sid vicious sapeva suonare il basso, consiglieresti a tutti i musicisti di tentare le luci della ribalta senza saper prendere uno strumento in mano? il fatto che due persone che conosci fanno cose informatiche senza conoscere il c non li rende esempi da seguire

anche perché molti concepiscono solo l'esistenza della triade c/c++/java, e altri - mi sembri un buon esempio - sono convinti che se non ci sono dei puntatori non sia vera programmazione)[/size]
tralasciando la presa per il culo (a me manco piace così tanto java, ma è da folli non riconoscergli meriti), un informatico deve sapere cosa significano puntatori, allocazioni dinamiche, stringhe gestite in modo elementare, passaggi per riferimento e tutte quelle cose che il c costringe ad imparare. ed è una buona cosa impararle PRIMA di essere abituati a risolvere i problemi con "import antigravity" e tutte quelle comodità degli altri linguaggi

ps: il signor virginia avrà tutti i suoi buoni motivi, ma tutti i sistemi operativi di questo mondo sono scritti in c (perfino quelli usciti l'altroieri) e i suoi studenti usciranno dal corso di sistemi operativi senza saper usare il linguaggio di riferimento. non è un caso se i due libri più importanti sull'argomento sono scritti in c e java. io comunque non userei mai il c per fare il 90% delle cose che faccio, voglio specificare
 
Ultima modifica di un moderatore:

Dustdas

Cassonetto differenziato
per lo stesso motivo per cui è più semplice passare dal cambio manuale a quello sequenziale che non il contrario.
Però se usiamo questi paragoni, le persone passano prima dal motorino e poi alla moto, è una cosa naturale, il motorino non ha le marce, la moto si, non mi pare che nessuno si sia mai lamentato...
 

Gkx

Admin
i MIEI link portano le opinioni di gente del calibro di spolsky, linus torvalds o dell'utenza di stackoverflow, il che sarebbe tutto dire.
https://yourlogicalfallacyis.com/appeal-to-authority

(tra l'altro anche uno dei miei link è di stackoverflow...)

i tuoi parlano di come python sia migliore per cominciare. opinabile, in alcuni casi potrei trovarmi d'accordo certo (come ho già detto), ma poi appena si approfondisce un po' la programmazione si inizia a piangere perché poi roba come python o ruby guarda caso si basano sul c.
non è che si basano sul c, il loro interprete canonico è scritto in c. esistono implementazioni alternative (pypy è scritto in python e ha un compilatore jit, poi ci sono i vari jruby/jython, la roba per .net, ecc). comunque la cosa che sto cercando di dirti è che non mi sembra necessariamente vero, dal punto di vista didattico, che c sia più difficile da imparare più tardi. molti dei programmatori che conosco (che non è che voglia dire granché, pura esperienza personale) hanno cominciato con php e adesso lavorano tranquillamente con c/c++ (o linguaggi di difficoltà comparabile), altri addirittura hanno cominciato smanettando con tlc per programmare i bot su irc... e dall'altra parte conosco gente che ha imparato c alle superiori e scrive dello spaghetti-code allucinante. non ci vedo necessariamente una correlazione, insomma, e dall'altra parte credo che c possa essere "troppo" per una persona alle prime armi.

anche il c#, perché non iniziare con quello? go è pure strano come paradigma, non è roba da principianti
ma andrebbe benissimo anche c#, che è un ottimo linguaggio, figurati!

neanche sid vicious sapeva suonare il basso, consiglieresti a tutti i musicisti di tentare le luci della ribalta senza saper prendere uno strumento in mano? il fatto che due persone che conosci fanno cose informatiche senza conoscere il c non li rende esempi da seguire
vabbè le analogie basta...

tralasciando la presa per il culo (a me manco piace così tanto java, ma è da folli non riconoscergli meriti), un informatico deve sapere cosa significano puntatori, allocazioni dinamiche, stringhe gestite in modo elementare, passaggi per riferimento e tutte quelle cose che il c costringe ad imparare. ed è una buona cosa impararle PRIMA di essere abituati a risolvere i problemi con "import antigravity" e tutte quelle comodità degli altri linguaggi
perché?

ps: il signor virginia avrà tutti i suoi buoni motivi, ma tutti i sistemi operativi di questo mondo sono scritti in c (perfino quelli usciti l'altroieri) e i suoi studenti usciranno dal corso di sistemi operativi senza saper usare il linguaggio di riferimento.
dipende da come interpreti l'insegnamento universitario. se lo scopo è formare utilizzando i migliori strumenti possibili, non vedo perché non prendere in considerazioni linguaggi moderni di equivalente astrazione e potenza (anche perché dubito che si possa insegnare c "come si deve" nella durata di un corso universitario). se lo scopo è formare gente perché venga assunta nelle aziende, allora che si insegni quello che vogliono le aziende, ma porta alla ripetizione del circolo vizioso di cui parlavo nel post precedente...
 

Maze

TypoMzn
Wiki
Premetto che non ho seguito al discussione con Iro perché non ne ho voglia

non capisco invece perché c debba per forza "servire sempre da qualche parte", ma mi sa che abbiamo già fatto questo discorso...
Sinceramente, lo vedo in giro un po' ovunque, ma è ovvio che se ne può fare bellamente a meno, almeno nei livelli più alti di programmazione. Poi è chiaro che se ti servono i puntatori da qualche parte ricadi su C: c'è un motivo per cui ha praticamente soppiantato qualsiasi cosa ci fosse prima, assembly escluso.
 

Iro

Amministratore di condominio
giuro che è l'ultimo post, perché mi sembra DAVVERO di parlare con un muro
 

perché è il suo mestiere.

non vedo perché non prendere in considerazioni linguaggi moderni di equivalente astrazione e potenza
perché i linguaggi nuovi sono meno collaudati, sono meno conosciuti, probabilmente hanno meno supporto da parte della comunità, meno librerie, meno tutto. l'insegnamento funziona che uno ti dà degli strumenti per iniziare, poi il resto sono principalmente cazzi tuoi. ed è molto più utile insegnare cose diffuse e standard e poi imparare roba esotica come go o rust per fatti propri che non il contrario
 
Ultima modifica di un moderatore:

Gkx

Admin
il "perché?" era inteso come "perché queste cose dovrebbe impararle subito invece che quando ha già dimestichezza con la programmazione?".

perché i linguaggi nuovi sono meno collaudati, sono meno conosciuti, probabilmente hanno meno supporto da parte della comunità, meno librerie, meno tutto.
appunto: c viene insegnato perché è popolare perché viene insegnato. quindi niente potrà mai soppiantare c e resteremo per sempre chiusi in un circolo vizioso. un po' come questa conversazione.
 
Ultima modifica di un moderatore:

Iro

Amministratore di condominio
l "perché?" era inteso come "perché queste cose dovrebbe impararle subito invece che quando ha già dimestichezza con la programmazione?".
la cosa bella dell'informatica è che ti insegnano subito a non reinventare la ruota e di basarsi sempre su cosa è stato scritto prima di te. quindi ovviamente linko un articolo al riguardo, http://www.joelonsoftware.com/articles/fog0000000319.html

due rotoli di pergamena al riguardo per lunedì prossimo. pagina 394.
 
Non sono molto esperta, conosco solo un po' Python, perchè lo studiando per la mia tesi in algebra computazionale.

Credo che dipenda in buona parte da cosa vuoi fare con il linguaggio che impari, uso Python perché molti programmi che fanno conti di algebra computazionale hanno Python come base, vedi Sage per esempio.
 

Gkx

Admin
la cosa bella dell'informatica è che ti insegnano subito a non reinventare la ruota e di basarsi sempre su cosa è stato scritto prima di te. quindi ovviamente linko un articolo al riguardo, http://www.joelonsoftware.com/articles/fog0000000319.html
nulla contro spolsky (e comunque l'articolo è del 2001), ma non sono d'accordo con ciò che dice. in qualsiasi campo l'insegnamento avviene a partire dal più facile per arrivare al più complesso... e se davvero sostiene che "If you want to teach somebody something well, you have to start at the very lowest level", non vedo perché non dovrebbe partire da assembly.

comunque dato che siamo ai link a caso (nei post precedenti ne ho linkati alcuni che esprimevano concetti opposti...), ti propongo di piantarla qui.
 

Iro

Amministratore di condominio
i tuoi link precedenti come argomentazione alla tesi "iniziare col python" portano cose del calibro di "si può programmare in python anche col solo text editor" (puoi farlo con qualsiasi linguaggio, anzi, BISOGNA farlo con qualsiasi linguaggio) oppure "ha poco boilerplate" (che è roba che non interessa ad un neofita della programmazione come problema) oppure "il typing dinamico è meglio per un newbie" (e poi piangi perché un newbie fa un SACCO di errori e un linguaggio dinamico non è per niente adatto per questo genere di cose)


per esempio, invece, il mio ultimo articolo da un chiaro esempio di abitudini di programmazioni sbagliate che una educazione che parte dal c permette di evitare. questo è un fatto, non una opinione con cui si può concordare o meno.

ps: a me fa morire questa fissazione che hai per l'assembler. il c ha senso non perché è di basso livello, ma per le tematiche che permette di approfondire. l'assembly (quale assembly, poi? mica ce ne sta uno solo) in che modo sarebbe migliore per queste tematiche?
 

Gkx

Admin
i tuoi link precedenti come argomentazione alla tesi "iniziare col python" portano cose del calibro di "si può programmare in python anche col solo text editor" (puoi farlo con qualsiasi linguaggio, anzi, BISOGNA farlo con qualsiasi linguaggio)
ma non eri tu che sostenevi l'impossibilità di scrivere programmi senza un'ide? comunque si parlava del REPL incluso in python, particolarmente comodo per l'apprendimento.

oppure "ha poco boilerplate" (che è roba che non interessa ad un neofita della programmazione come problema)
la mancanza di boilerplate e la semplicità della sintassi a me sembrano fattori fondamentali per chi sta imparando. ymmv.

oppure "il typing dinamico è meglio per un newbie" (e poi piangi perché un newbie fa un SACCO di errori e un linguaggio dinamico non è per niente adatto per questo genere di cose)
guarda che python pur essendo dinamico è fortemente tipizzato e non consente operazioni tra tipi diversi (a differenza di js, php, ecc), ed espone il suo type system in maniera piuttosto chiara. ma poi quale genere di cose?

in generale il motivo per cui personalmente consiglierei python per cominciare è che offre una visione di alto livello sulla programmazione, permettendo di concentrarsi sul problem solving, ottenendo risultati molto velocemente (anche grazie a tool come ipython), e aprendo la porta a linguaggi e concetti più complicati.

per esempio, invece, il mio ultimo articolo da un chiaro esempio di abitudini di programmazioni sbagliate che una educazione che parte dal c permette di evitare. questo è un fatto, non una opinione con cui si può concordare o meno.
prendere un'opinione e decidere che è un fatto non la rende un fatto :)

comunque ripeto, è un articolo del 2001 (due-mila-uno), e tredici anni nell'informatica sono una vita. la sintesi è che gestire efficacemente le risorse di un computer è difficile, e l'unico modo per farlo è conoscere bene c (che ha i suoi mille quirks e rende piuttosto facile tirarsi la zappa sui piedi). ma le risorse a disposizione di un computer medio oggi sono qualche ordine di grandezza superiori rispetto a quelle del 2001, e la performance nella maggior parte dei casi non è un problema; nel momento in cui lo diventa, c non è il solo linguaggio che permette più controllo sull'esecuzione di un programma, anzi, è molto più limitato in aspetti essenziali come il parallelismo, e la mancanza di type safety e memory safety apre a tutta una serie di possibili vulnerabilità non sempre facili da individuare.

(ah, tra l'altro jeff atwood, co-fondatore di stackoverflow insieme a spolsky, non conosce il c...)

ps: a me fa morire questa fissazione che hai per l'assembler. il c ha senso non perché è di basso livello, ma per le tematiche che permette di approfondire. l'assembly (quale assembly, poi? mica ce ne sta uno solo) in che modo sarebbe migliore per queste tematiche?
veramente contestavo proprio l'affermazione del tuo amico secondo cui bisogna iniziare dal "very lowest level" (per inciso, non consiglierei mai l'assembly come linguaggio iniziale)

Ma se invece cominciassi col LUA, andrebbe bene lo stesso?
è un ottimo linguaggio dinamico, e l'interprete luajit è velocissimo (quasi c-like), oltre al fatto che lo usiamo sul wiki. ma avendo meno librerie, comunità e documentazione a disposizione, ti consiglierei di partire da qualcos'altro.
 
Ultima modifica di un moderatore:
Top Bottom