Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 3 di 3
Vai a pagina Precedente  123
 
Imparare a programmare in C [da zero]
13247959
13247959 Inviato: 16 Apr 2012 18:20
 

2pt di infornazioni senza un database è molto rara quindi solovin ambito scentifico.
fontinui a dire che c plusplus èperfetto in ambito scentifico ed è vero ma esistono anche molti altri ambienti....

il consiglio è di nn concentrarsi solo su un linguaggio di prog ma in base al progetto scegliere il linguaggio più opportuno



ah nn dimenticare che java al momento della compilazione fa un ottimizzazione pesante ....ed questo procedimento é sempre in continuo aggiornamento
 
13248012
13248012 Inviato: 16 Apr 2012 18:30
 

topo ha scritto:
Il problema che molte università stanno mettendo da parte C e C++
e stanno focalizzandosi su JAVA ...
il motivo non lo so

Neanch'io, ma ti racconto una cosa.
Tra il 1995 ed il 1997 ebbi di occasione di lavorare con un sistemista coi controfiocchi... un di quelli a cui i server davano del "lei" icon_asd.gif
Laureato in scienze dell'informazione con il massimo dei voti, attualemte e' titolare di un'azienda che si occupa di sicurezza informatica.

Bene... mi racconto che all'universita' NON aveva studiato il C. A detta del rettore, era un linguaggio "moribondo"... ed aveva lungimirantemente sostituito i corsi di C con.... il LISP icon_smile.gif
 
13253038
13253038 Inviato: 17 Apr 2012 20:30
 

Ormai tutti i programmi che richiedono molte risorse di calcolo devono essere scritti per essere girati in parallelo su più core... Domanda: com'è la parallelizzabilità di java?
 
13255557
13255557 Inviato: 18 Apr 2012 14:29
 

ma parallelizzabili6à intendi che due o più parti di programma vengono eseguiti in simultanea o quasi ?? che possono accedere alla stessa risorsa contemporaneamente ecc

esistono i magnifici thread c he hanno diverse funzioni ... e sono davvero comodi
i tipi che ho visto possono funzionare assieme in diversi modi

- coda dei thread in esecuzione
- coda dei thread pronti in attesa di esser mandati in esecuzione su una coda di esecuzione
- N code dei thread bloccati per ogni risorsa condivisa in attesa di accedere ad una risorsa condivisa ovvero che questa risorsa sia disponibile

questo è quello che ho visto in uni

poi invece intendi a livello fisico questo l'utente non và a gestire quale core andrà a prendere il processo ecc ... sarà java che provvederà a fare tutto senza molti problemi


0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif
 
13255575
13255575 Inviato: 18 Apr 2012 14:34
 

prova ad eseguire questo codice

C
#include <stdio.h>
#include <time.h>

int main ( ) {
int i;
time_t now = time ( NULL );
printf ( ctime ( &now ) );
for ( i = 0; i < 1000000000; i ++ ) {
// if ( ! ( i % 100000000 ) )
// printf ( "%d\n", i )
}
printf ( "Finito!\n\n" );
now = time ( NULL );
printf ( ctime ( &now ) );
return 0;
}

codice:
Java
import java.io.*;
import java.util.*;

class javacnt {
public static void main (String[] args) {
Date d = new Date ( );
System.out.println ( d );
for (int i=0; i<1000000000; i++) {
//if ( ( i % 100000000 ) == 0 )
// System.out.println ( i );
}
System.out.println ("Fine");
d = new Date ( );
System.out.println ( d );
}
}

e guarda chi vince
 
13256038
13256038 Inviato: 18 Apr 2012 16:21
 

E' inutile paragonare linguaggi con livelli di astrazione diversi perché hanno i loro pro e contro, a seconda del compito da svolgere sarà preferibile un linguaggio più che un altro.

Più sale il livello di astrazione più i programmi diventano semplici da scrivere correttamente al costo di una riduzione delle performance sia a livello di risorse utilizzate sia di capacità di elaborazione dati.

Lo stesso programma in assembler sarà più veloce e leggero di uno scritto in C / C++ che a sua volta sarà più leggero di uno scritto in java. D'altro canto il linguaggio assembly è estremamente complesso e macchinoso senza contare il fatto che varia in base all'hardware, il C costringe alla gestione manuale dell'allocazione della memoria che è facilissimo sbagliare ed essendo compilato è anch'esso dipendente dall'hardware mentre java gestisce gran parte di queste problematiche in maniera autonoma ed essendo sia compilato che interpretato può essere eseguito su qualunque hardware.

E' inevitabile che il mondo dell'informatica per le aziende sia stia progressivamente muovendo verso linguaggi di alto livello principalmente per una questione di spesa per la realizzazione mentre il mondo della ricerca che ha requisiti completamente diversi sia più legato a linguaggi a basso livello. Con l'aumento delle capacità delle macchine le risorse necessarie per un programma perdono importanza ed è più semplice investire in un server da 30k euro che in un software più complesso il cui costo è difficilmente determinabile.

Due piccole puntualizzazioni: per quanto si sia bravi il problema dei puntatori in C rimane, anche i migliori programmatori (es apple, può non piacervi come a me ma son bravi) non riescono a prevedere tutte le casistiche difatti i vari smartphone e tablet sono stati sbloccati proprio grazie a questi errori. In java gli ArrayIndexOutOfBound sono semplicissimi da evitare e l'utilizzo degli array è ridotto al minimo a favore di strutture più complesse come List, Map, Collection ecc

Venendo al dunque: se ti interessa imparare un linguaggio per puro interesse personale senza una specifica necessità di farlo vai sul C / C++ che è il "vero" linguaggio di programmazione con cui sono fatti il 99% dei kernel esistenti, se invece hai un interesse nel creare semplici programmi che svolgano compiti tediosi al posto tuo, siti web o applicazioni per smartphone è nettamente meglio java.
 
13256184
13256184 Inviato: 18 Apr 2012 17:01
 

topo ha scritto:
ma parallelizzabili6à intendi che due o più parti di programma vengono eseguiti in simultanea o quasi ?? che possono accedere alla stessa risorsa contemporaneamente ecc

Esatto! Ormai se vuoi programmare bene devi programmare così!

topo ha scritto:
esistono i magnifici thread c he hanno diverse funzioni ... e sono davvero comodi
i tipi che ho visto possono funzionare assieme in diversi modi

- coda dei thread in esecuzione
- coda dei thread pronti in attesa di esser mandati in esecuzione su una coda di esecuzione
- N code dei thread bloccati per ogni risorsa condivisa in attesa di accedere ad una risorsa condivisa ovvero che questa risorsa sia disponibile

In C lo sapevo già fare, ma in java c'è qualcosa?


PS. I tuoi programmi giravano entrambi in una frazione di secondo, allora li ho modificati così:
Codice:
#include <stdio.h>
#include <time.h>

int main ( ) {
time_t now = time ( NULL );
printf ( ctime ( &now ) );
for ( int i = 0; i < 1000000000; i ++ ) {
for ( int j = 0; j < 1000000000; j ++ ) {
for ( int k = 0; k < 1000000000; k ++ ) {
for ( int l = 0; l < 1000000000; l ++ ) {
for ( int m = 0; m < 1000000000; m ++ ) {
// if ( ! ( i % 100000000 ) )
// printf ( "%d\n", i )
} } } } }
printf ( "Finito!\n\n" );
now = time ( NULL );
printf ( ctime ( &now ) );
return 0;
}

E similmente java. Il programma in C continua a girare in una minuscola frazione di secondo, il java invece l'ho fermato dopo 5 minuti che continuava a runnare...
Ho compilato il c con g++, il java con javac, la macchina è un I5@2.66GHz.. però considera che so compilare molto meglio con g++ che con javac.
 
13256216
13256216 Inviato: 18 Apr 2012 17:09
 

Aste88 ha scritto:
C costringe alla gestione manuale dell'allocazione della memoria

Il C sì, il C++ no, quantomeno non costringe. Esistono tipi List e Vector che permettono di evitare l'uso dei puntatori. Certo se uno lì sa usare ha un sacco di libertà in più, ma penso che sia possibile scrivere un programma anche abbastanza complicato, che funzioni bene senza usare nessuna * o &
 
13256610
13256610 Inviato: 18 Apr 2012 18:35
 

si in java si usa anche li thread ... penso che ci siano altri ma all uni non li ho visti ....


in android la jvm non e identica a quella su macchina desktop ... e' molto piú leggera
 
13265815
13265815 Inviato: 20 Apr 2012 22:58
 

42 ha scritto:

Bene... mi racconto che all'universita' NON aveva studiato il C. A detta del rettore, era un linguaggio "moribondo"... ed aveva lungimirantemente sostituito i corsi di C con.... il LISP icon_smile.gif

Hehe, mi ricorda uno dei guru sapientoni di una società americana per cui ho lavorato, che diceva che Windows non aveva futuro e che OS/2 era "the way to go". Purtroppo quando si è trattato di portare il loro software da mainframe a PC hanno dato retta a lui, e adesso la società non c'è più icon_asd.gif

EDIT: il LISP è un linguaggio estremamente potente, e un eccellente strumento formativo - io è dall'epoca del CP/M che ogni tanto mi metto a giocarci per fare il tagliando ai neuroni. Detto questo, chiunque abbia detto o dica che il C è moribondo farebbe meglio ad iniziare le manovre di rientro dall'orbita... icon_wink.gif
 
13266140
13266140 Inviato: 21 Apr 2012 7:37
 

io all'uni ho fatto un corso da ben 3 crediti
almeno 9 crediti doveva essere ma hanno deciso di farlo da 3 crediti
durata nemmeno 4 settimane eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif

in compenso adesso java lo stiamo vedendo applicato ad android
 
13266367
13266367 Inviato: 21 Apr 2012 10:25
 

topo ha scritto:
io all'uni ho fatto un corso da ben 3 crediti
almeno 9 crediti doveva essere ma hanno deciso di farlo da 3 crediti
durata nemmeno 4 settimane eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif eusa_wall.gif

in compenso adesso java lo stiamo vedendo applicato ad android


Già è proprio per questo che mi stò decidendo a imparare almeno le basi...avete qualche conisglio su qualche libro semblice? .. frequento un itis e so programmare in C#,pascal icon_asd.gif icon_asd.gif ,assembler le basi.. ma se c' è un liblo che spiega bene e abbastanza semplicemente mi fiondo a comprarlo icon_biggrin.gif ah..e per quanto riguarda java esistono dei siti come su c++? eusa_think.gif eusa_think.gif
 
13266646
13266646 Inviato: 21 Apr 2012 12:26
 
 
13267698
13267698 Inviato: 21 Apr 2012 19:19
 

Ciao ragazzi, sapete consigliarmi qualche buon sito per imparare a programmare e per approfondire le conoscenze in campo di "hacking" & Co.?

Thank's 0509_up.gif
 
13267769
13267769 Inviato: 21 Apr 2012 19:45
 

spiega cosa intendi per hacking
 
13267857
13267857 Inviato: 21 Apr 2012 20:08
 

topo ha scritto:
spiega cosa intendi per hacking


Semplice, imparare a rendere sicura una rete etc...

Non fare le solite cazzate da bambini con virus e roba varia.

Capire a fondo come funzionano le reti ad esempio 0509_up.gif
 
13282558
13282558 Inviato: 25 Apr 2012 23:33
 

Django ha scritto:
OS/2 era "the way to go"

OS/2 icon_arrow.gif Half an Operating System icon_asd.gif
 
13318797
13318797 Inviato: 6 Mag 2012 9:56
 

Django ha scritto:

chiunque abbia detto o dica che il C è moribondo farebbe meglio ad iniziare le manovre di rientro dall'orbita... icon_wink.gif


In effetti se sta con i piedi per terra e si consultano di frequente le inserzioni di ricerca lavoro (come sto facendo io di questi tempi icon_cry.gif ), si vede che il Cobol è ancora ben vivo, ed è nato quasi 20 anni prima del C. icon_eek.gif
Nel mondo reale ci sono miliardi di righe di codice scritte nei linguaggi più svariati, che fanno cose utili e che devono essere manutenute.
So di una banca olandese che ancora fino a pochi anni fa aveva in tutte le filiali i sistemi Olivetti L1, con sistema operativo, middleware e parecchie applicazioni scritte in Pascal, che era ritenuto un linguaggio per uso prettamente didattico.

doppio_lamp_naked.gif doppio_lamp_naked.gif
 
13319026
13319026 Inviato: 6 Mag 2012 11:05
 

IN android tutte le librerie sono scritte in C ma i programmi sono scritti in JAVA
per avere una più semplice gestione e una più veloce stesura del programma

ovvio che le operazioni non sono veloci come il C ... ma ottimizzare un programma in C ci si mette parecchio in java quando si compila la JVM per generare il bitcode applica molte ottimizzazione che sono belle complesse da capire ...

quindi con java ci metti meno tempo ma avrai un codice non perfettamente come in C dove però per fare un programma ci metterai un pò di più

qui ci sono sempre pro e contro

come usare C# JAVA oppure vb.net
 
13323397
13323397 Inviato: 7 Mag 2012 15:13
 

topo ha scritto:
IN android tutte le librerie sono scritte in C ma i programmi sono scritti in JAVA
per avere una più semplice gestione e una più veloce stesura del programma

ovvio che le operazioni non sono veloci come il C ... ma ottimizzare un programma in C ci si mette parecchio in java quando si compila la JVM per generare il bitcode applica molte ottimizzazione che sono belle complesse da capire ...

quindi con java ci metti meno tempo ma avrai un codice non perfettamente come in C dove però per fare un programma ci metterai un pò di più

qui ci sono sempre pro e contro

come usare C# JAVA oppure vb.net


in che senso? eusa_think.gif
 
13332589
13332589 Inviato: 9 Mag 2012 17:13
 

sabato ho verifica di sistemi (programmazione in c,roba da 3 superiore elettronica)
chi ne sa qualcosa? icon_asd.gif
 
13338724
13338724 Inviato: 11 Mag 2012 7:07
 

Sarà sui puntatori ... non penso che siate arrivati a vedere gli alberi ecc


Ogni linguaggio ha i suoi vantaggi e svantaggi

in java permette una più veloce realizzazione di un programma rispetto a C e C++
ma nello stesso tempo è un pò meno prestante

IN C e C++ permette di realizzare l'applicazione ma ci vuole più tempo
Pro si possono raggiungere prestazioni molto elevate 0509_doppio_ok.gif ma sempre dopo un ottimizzazione
 
Mostra prima i messaggi di:





Pagina 3 di 3
Vai a pagina Precedente  123

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©