DOMANDA Consigli su linguaggi di programmazione da studiare e altro

Pino90

Nuovo Utente
98
223
Non riesco ancora a capire se c++ è una specie di "update" del c con solo qualche modifica o se è un linguaggio a parte.

Gli autori lo definiscono un superset di istruzioni del C, di fatto è un altro linguaggio e non bisogna per nessun motivo mischiarli quando si programma.
 

Tinwor

Utente Attivo
932
143
Tranquillo che Java non lo si finisce mai di studiare(purtroppo). Questo concetto si può estendere a qualsiasi linguaggio di programmazione. Rimango comunque convinto che iniziare da subito con un linguaggio di programmazione sia la scelta sbagliata: è un po' come scegliere fra un per assemblato e un PC da assemblare. Nel primo caso non hai problemi all' inizio ma a medio lungo termine avrai dei rallentamenti/intoppi, con il PC da assemblare no; cambi il componente e via.
Una cosa che mi viene in mente e avvalora la mia tesi sono le lambda expression(o anche le monadi fate voi): se conosco cosa ce dietro non avrò problemi a utilizzarle in java piuttosto che in c++(o altri linguaggi) perché sono praticamente uguali e cambia solo un po' la sintassi. Se invece non sai la teoria so cavoli: ogni 3x2 ti ritrovi bloccato perché non sai risolvere la problematica
 

pabloski

Utente Èlite
2,868
916
E cosa dovrei fare allora?

Credo la questione sia mal posta. Python, C, Java, Haskell, ecc... sono tutti linguaggi con differenti semantiche e differenti obiettivi. Il tipo di tipizzazione ( forte/debole, statica/dinamica ) è funzione di cosa i progettisti del linguaggio hanno visto come obiettivo rilevante. Non c'è nulla di sbagliato in un linguaggio a tipizzazione dinamica e forte come Python.

Il punto è che ogni tool è adatto ad uno specifico set di scopi.

Detto questo, tinwor voleva dire che, linguaggio a parte, bisogna acquisire la forma mentis del programmatore e studiare un minimo di algoritmi. Se inizia da zero, il tuo scopo principale è questo. Perchè Python? Perchè ti permette di concentrarti su questi due aspetti, tralasciando gli aspetti più implementativi.

Java e C o C++ richiedono una maggiore attenzione ai dettagli, cosa che inizialmente può risultare pesante ed intralciare il tuo cammino.

Imho dovresti cominciare da qui Pensare da informatico: Imparare con Python

Poi puoi occuparti di studiare C, Java e compagnia. E considera che esistono altre famiglie di linguaggi, basati su filosofie molto diverse ed adatti alla realizzazione di software di grandi dimensioni ( riducendo al minimo il numero di bug ) e software multi-threaded. Haskell, Erlang, OCaml, c'è un universo di linguaggi come diversi da quelli più comuni.

E infine considera che i linguaggi si possono classificare per diffusione. In questo caso C, Java, C++, Objective-C, C#, Javascript, Python. Più o meno la situazione è questa.
 

Pino90

Nuovo Utente
98
223
Credo la questione sia mal posta. Python, C, Java, Haskell, ecc... sono tutti linguaggi con differenti semantiche e differenti obiettivi. Il tipo di tipizzazione ( forte/debole, statica/dinamica ) è funzione di cosa i progettisti del linguaggio hanno visto come obiettivo rilevante. Non c'è nulla di sbagliato in un linguaggio a tipizzazione dinamica e forte come Python.

Il punto è che ogni tool è adatto ad uno specifico set di scopi.

Detto questo, tinwor voleva dire che, linguaggio a parte, bisogna acquisire la forma mentis del programmatore e studiare un minimo di algoritmi. Se inizia da zero, il tuo scopo principale è questo. Perchè Python? Perchè ti permette di concentrarti su questi due aspetti, tralasciando gli aspetti più implementativi.

Java e C o C++ richiedono una maggiore attenzione ai dettagli, cosa che inizialmente può risultare pesante ed intralciare il tuo cammino.

Imho dovresti cominciare da qui Pensare da informatico: Imparare con Python

Poi puoi occuparti di studiare C, Java e compagnia. E considera che esistono altre famiglie di linguaggi, basati su filosofie molto diverse ed adatti alla realizzazione di software di grandi dimensioni ( riducendo al minimo il numero di bug ) e software multi-threaded. Haskell, Erlang, OCaml, c'è un universo di linguaggi come diversi da quelli più comuni.

E infine considera che i linguaggi si possono classificare per diffusione. In questo caso C, Java, C++, Objective-C, C#, Javascript, Python. Più o meno la situazione è questa.

Boh, io sono del parere opposto avendo a che fare con studenti più giovani di me. In python mi succede spesso e volentieri di vedere ragazzi che non capiscono come la loro variabile si sia trasformata in un dizionario e tante altre cose così, per questo suggerivo qualcosa di più rigoroso. Secondo me python rimane una scelta poco indicata per un principiante.
 

pabloski

Utente Èlite
2,868
916
Boh, io sono del parere opposto avendo a che fare con studenti più giovani di me. In python mi succede spesso e volentieri di vedere ragazzi che non capiscono come la loro variabile si sia trasformata in un dizionario e tante altre cose così, per questo suggerivo qualcosa di più rigoroso. Secondo me python rimane una scelta poco indicata per un principiante.

Il problema è che ci sono tantissimi concetti che vanno capiti e nessun linguaggio li espone tutti. E' una vecchia diatriba quella tra linguaggi rigorosi e linguaggi lazy. Negli anni '80 andava fortissimo il Pascal proprio per il motivo che hai citato. Però può risultare pesante e scoraggiante proprio perchè troppo rigoroso.

Credo che il sistema di apprendimento vada adattato al singolo individuo, non c'è un metodo che vada bene per tutti. Python ha molte risorse online e offline dedicate a chi comincia da zero, per questo è spesso consigliato. Ma assolutamente non ci si può fermare a Python, altrimenti si avrà solo una preparazione grossolana ed incompleta ( per la serie "inutile pensare che l'assembly non lo si dovrà studiare" ).
 
  • Mi piace
Reazioni: Pino90

Pino90

Nuovo Utente
98
223
Il problema è che ci sono tantissimi concetti che vanno capiti e nessun linguaggio li espone tutti. E' una vecchia diatriba quella tra linguaggi rigorosi e linguaggi lazy. Negli anni '80 andava fortissimo il Pascal proprio per il motivo che hai citato. Però può risultare pesante e scoraggiante proprio perchè troppo rigoroso.

Credo che il sistema di apprendimento vada adattato al singolo individuo, non c'è un metodo che vada bene per tutti. Python ha molte risorse online e offline dedicate a chi comincia da zero, per questo è spesso consigliato. Ma assolutamente non ci si può fermare a Python, altrimenti si avrà solo una preparazione grossolana ed incompleta ( per la serie "inutile pensare che l'assembly non lo si dovrà studiare" ).

Molto chiaro. Hai probabilmente molta più esperienza di me nel campo e quindi mi fido, e sono assolutamente d'accordo sulla personalizzazione del metodo di apprendimento, però continuo a pensare che sia meglio impostare subito uno schema rigoroso che faccia comprendere allo studente il perché delle cose e lo abitui - oltre al ragionamento - anche alla precisione. Alla fine se ci pensi il Java non è macchinoso come il C(++), è discretamente intuitivo ed ha un framework molto ricco. In ogni caso al nostro caro @BagyGamer non resta altro che partire, penso che dopo tre pagine di discussione si sia fatto una sua opinione.
 

pabloski

Utente Èlite
2,868
916
però continuo a pensare che sia meglio impostare subito uno schema rigoroso che faccia comprendere allo studente il perché delle cose e lo abitui - oltre al ragionamento - anche alla precisione.

Si, è una delle strade possibili. Ma non troverai mai accordo su questo tema. Basta che ti fai un giro sul forum programmazione di hwupgrade e troverai infinite flame war su quest'argomento.

In ogni caso al nostro caro @BagyGamer non resta altro che partire, penso che dopo tre pagine di discussione si sia fatto una sua opinione.

Questo è un nocciolo della faccenda, ovvero fa prima a partire che porsi mille dubbi. Tanto ( e parlo per esperienza ) una strada rapida, veloce e facile per diventare informatici non esiste. Se non ti fai il **** non arrivi da nessuna parte.

Provare 2-3 strade diverse, all'inizio, serve anche a capire le proprie attitudini e quindi scegliere il percorso successivo.
 
  • Mi piace
Reazioni: Pino90

BagyGamer

Utente Attivo
388
25
CPU
AMD A8-6500
HDD
1 TB
RAM
8 GB
GPU
Radeon R7 240 + HD8570 Dual Graphics
OS
Windows 8.1
Grazie mille per tutto quanto adesso riorganizzo un pò le idee e ci penso su.
Grazie ancora!
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili