|
|
|
|
Strumenti |
23-10-2017, 11:04 | #21 | |||
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Quote:
Quote:
Come, ripeto, molti linguaggi fanno. |
|||
23-10-2017, 11:25 | #22 | ||
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
Quote:
Il fatto che N "appartenga" a R non ha alcuna rilevanza matematica. Tu vuoi fare una divisione IN N. Cosi' come, nel campo dei numeri reali, l'equazione che ho scritto prima NON HA SOLUZIONE. EPPURE R e' "contenuto" in C. Il fatto che altri linguaggi ti permettano di assegnare 0.33 ad un intero non e' un motivo per sputtanare la matematica. |
||
23-10-2017, 12:40 | #23 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Aggiungo che, forse, di matematica i progettisti del C qualcosina ne capivano, visto che Dennis Ritchie era laureato in Fisica e Matematica applicata.
|
23-10-2017, 14:29 | #24 |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Wow, che mega discussione, non ho aperto hwupgrade per un paio di giorni...
Senza entrare nel merito di C vs resto del mondo (a me C piace, lo uso per i miei progetti hobbistici e per codingame!) in azienda non ho mai visto usare haskell. Nel mondo embedded C e C++ si usano tantissimo assieme a Python, quest'ultimo per i test e per l'interfacciamento pc->sistema embedded. C++ non mi dispiace ma per certe cose è davvero complicato. Inoltre non l'ho mai usato per lavoro (a differenza di C e Python), quindi sono abbastanza un principiante. Siccome ho mandato tutto al diavolo, ho lasciato il lavoro e ho cominciato un dottorato all'università, non devo più sottostare ai dettami dell'industria e posso sbizzarrirmi per i prossimi 4 anni. Perciò volevo tentare Haskell. Secondo me viene bene per analizzare i dati e fare statistica. Il compilatore (almeno a detta del web) è ottimo e gira bene dappertutto. Inoltre sono abbastanza convinto di poterlo usare per AI. Ocaml è più facile di haskell ma il supporto per Windows è orrendo
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! |
23-10-2017, 21:31 | #25 | |||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
In Python: Codice:
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. DreamPie 1.2.1 >>> 1 / 3 0: 0 In Python, dove si può fare questo: Codice:
>>> from fractions import Fraction >>> a = Fraction(1) >>> b = Fraction(3) >>> c = a / b >>> c 1: Fraction(1, 3) >>> print c 1/3 Quote:
Anche jerryscript richiede parecchie risorse: "Only few kilobytes of RAM available to the engine (<64 KB RAM) E anche la più scarsa scheda per MicroPython richiede una valanga di risorse: "96 MHz Cortex M4 CPU with hardware floating point Queste schede vanno bene per giocarci con qualche progetto amatoriale, ma se devi realizzare qualcosa di serio, e mi riferisco a prodotti da migliaia o molti più pezzi, diventano assolutamente antieconomici e praticamente impossibili da adottare, perché trovi degli Atmel (che fanno schifo, eh! Mica fa piacere lavorare con così poche risorse) a prezzi da quasi un ordine di grandezza meno. Quote:
Comunque in linea generale è vero che un linguaggio cerca di essere strutturato in modo da essere più facilmente fruibile dall'uomo, ma non è sempre così, e soprattutto la cosa che non si può dimenticare è che importante l'ambito di utilizzo. I linguaggi servono a risolvere determinati problemi: è questo lo scopo primario per cui sono nati. Quote:
Quote:
Quote:
E anche qui ti assicuro che i bug sono una cosa serissima. Quote:
Quote:
Quote:
Ma poi, visto che R è contenuto in C, perché non convertire direttamente la divisione in un numero complesso? Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||
24-10-2017, 08:35 | #26 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Tornando in tema, chi si trova in ambiente Windows puo' scegliere indistintamente tra F# e Haskell, o uno e' "meglio" dell'altro?
|
24-10-2017, 09:48 | #27 | ||
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Quote:
Se poi magari i programmatori sono 5 / 6 tutti occupati a cercare di risolvere a suon di baccate bug diversi... Noi abbiamo trovato in un codice C che sarà un 1'000'000 di righe bug che sono apparsi dopo 15 anni cambiando qualcosa in un posto totalmente diverso... ci siamo stati un mese a trovarlo! Mah... Comunque sì la divisione tra 2 interi fa un intero eventualmente con il resto Quote:
Haskell ha il concetto di null?
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! Ultima modifica di fano : 24-10-2017 alle 09:51. |
||
24-10-2017, 10:29 | #28 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Dunque, da un punto di vista didattico, e' meglio andare di Haskell rispetto a F#?
|
24-10-2017, 10:57 | #29 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Quote:
In F# "puro" non esiste null tutte le API sono riscritte per usare un concetto analogo a Maybe purtroppo null può riapparire come "poison" se si chiamano librerie scritte in C#. Microsoft sta cercando per la versione 8.0 di C# di introdurre il concetto che gli oggetti sono sempre non null un po' l'inverso del nullable che fecero per i tipi primitivi in versioni precedenti... credo sia davvero difficile retrofittare un linguaggio pensato per avere null ovunque a non averli più. Il null è un errore da un 1'000'000 di € Fibonacci in F#: Codice:
// Recursive function that implements the looping // (it takes previous two elements, a and b) let rec fibsRec a b = if a + b < 400 then // The current element let current = a + b // Calculate all remaining elements recursively // using 'b' as 'a' and 'current' as 'b' (in the next iteration) let rest = fibsRec b current // Return the remaining elements with 'current' appended to the // front of the resulting list (this constructs new list, // so there is no mutation here!) current :: rest else [] // generated all elements - return empty list once we're done // generate list with 1, 2 and all other larger fibonaccis let fibs = 1::2::(fibsRec 1 2)
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! Ultima modifica di fano : 24-10-2017 alle 11:00. |
|
24-10-2017, 16:01 | #30 |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
No, ho dato le dimissioni in primavera e ho finito di lavorare li il 31 agosto.
Ho fatto application per un dottorato alla ku leuven e mi hanno preso! Ora mi occupo di comunicazioni wireless tra droni. La situazione in Nokia era diventata un po' ripetitiva e i miei progetti costantemente cancellati e alla fine mi sono seccato. Anche perché finché non finivo un progetto per intero non ero indipendente dagli altri per portare avanti un progetto da solo. Poi mi ero anche stufato di testare convertitori DC/DC. Purtroppo ogni mia proposta di qualcosa di innovativo veniva blastata all'istante, anche col mio capo che mi dava manforte. Vedremo quando finisco qui, sicuramente tenterò di rientrare in Nokia (magari ai bell labs?).
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! |
24-10-2017, 19:02 | #31 |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Crepi il lupo!
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! |
27-10-2017, 05:44 | #32 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Anche se lo metti un mese intero soltanto a fare debug sul SoC economico, hai comunque risparmiato un sacco di soldi rispetto all'impiego del SoC che ti costa 20€ in più. E parliamo di 1000 pezzi. Ma per certi progetti puoi arrivare ad avere anche 100 mila, o anche 1 milione di pezzi. E lì anche UN solo euro di differenza pesa moltissimo. Purtroppo con l'embedded è così. Gioie, ma soprattutto dolori. Che si devono sorbire gli sviluppatori (chi non vorrebbe il SoC più strafico da programmare con linguaggio che uno preferisce e/o che gli fa risparmiare tempo in debug?). Alla fine per l'azienda è spesso molto, ma molto più conveniente spendere qualche mese/uomo che vagonate di soldi in SoC più costosi. Quote:
Quel progetto sarà frutto di un modo di lavorare "all'antica", dove il testing si faceva a mano, a prodotto finito. Poteva andare bene 15 anni fa, ma non oggi. Specialmente con tutte quelle linee di codice. Ovviamente realizzare una test suite adesso penso sia impensabile e inutile, se dovete apportare giusto qualche modifica ogni tanto, raramente. Ma è da mettere seriamente in considerazione se ci lavorate più spesso, e non serve realizzarla subito: un po' alla volta, introducete test proprio nel codice che state andando a modificare. Quote:
In ogni caso spero che il cambio ti giovi e che ti trova bene col dottorato. Poi un lavoro uno come te lo trova sicuramente ovunque. In bocca al lupo!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
27-10-2017, 10:43 | #33 | ||
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Quote:
... nel caso di Cosmos poi sparirebbe anche un altro punto di "incertezza" il JIT essendo tutto compilato AOT certo se poi ci si mena la fava con il GC beh allora siamo fritti! Più veloce, ma con memory leak? Boh... Anche la parte più real time che non facciamo noi sempre schede ARM (prima erano Motorola quindi tipo "Amiga") che credo almeno 256 MB di RAM ce le abbiamo alla fine non credo che C sia davvero necessario lo è nella loro "mente"! 30 anni fa sarebbe stato scritto in Fortan e il "giovane ribelle" sarebbe stato quello che voleva scriverlo in C Quote:
Comunque come faccio a fare un unit test visto che ho bisogno di periferiche esterne che si "sollecitano"? Dovrei simulare anche loro? Spesso è richiesta anche un interazione umana... Con le nuove versioni ri-scritti di sana pianta abbiamo iniziato a "simulare" la pressione dei tasti con xdotools, ma lo usiamo più per vedere se il C sta sbordando sul mio codice o se ci sonoo memory leak praticamente gli dici fai 10'000 transazioni e lo si lascia a soffrire tutto l'week end e poi vediamo se è sopravvissuto, ma non ho idea di come verificare che le 10'000 transazioni sono tutte giuste se non si è bloccato è OK per me
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! |
||
27-10-2017, 12:32 | #34 | ||
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Inoltre il costo dello sviluppatore è una tantum, è un costo fisso, mentre i costi di produzione sono variabili. I costi fissi si dividono su tutta la produzione, quelli variabili aumentano. Quindi meglio spendere un po' di più in sviluppo (= pochissimo quando si va di produzione in volumi) che un poco di più su ogni unità prodotta. È anche una questione di consumi comunque. SoC e processori più piccoli e con meno ram consumano molto meno di processori più sofisticati. Anche li si parla di milliwatt a volte ma su tante unità fanno la differenza. Io ho lavorato sui sistemi per VDSL e G.fast. Soprattutto questi ultimi a volte sono reverse powered = prendono energia dalla linea telefonica dell'utente. Li anche 100mW fanno la differenza perché il sistema deve poter accendersi anche con un solo utente collegato. Un utente fornisce mediamente 7~8W. Non è che per fare felice il programmatore di turno felice e contento puoi tirarne 50W. Se vuoi farti un'idea poco precisa ma realistica di come vanno le cose, ti consiglio di giocare a Shenzhen I/O! (che è un gioco fichissimo tra l'altro ) Quote:
Ci sono i Bell Labs qui ad Anversa, non è necessario andare in USA (Sempre ammesso che mi prendano, non è mica così facile entrarci )
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! Ultima modifica di ingframin : 27-10-2017 alle 12:38. |
||
27-10-2017, 20:14 | #35 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Quote:
Quindi si va di assembler o almeno il C si riesce ad usare? Io per Cosmos a parte quello che faccio per il mio lavoro penso ai router ADSL / Fibra Ottica quelli hanno CPU ARM o MIPS "decenti" e Linux a bordo e dove gira Linux può girare anche Cosmos Alla fine tornando IT nelle aziende linguaggi moderni come Haskell o F# è difficile che te li facciano usare, i capi di solito sono over 50 quindi C++ è già qualcosa di "esotico"
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! |
|
28-10-2017, 09:31 | #36 | |||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Quote:
Quote:
In ambito embedded 256MB, di sola RAM, sono una quantità spropositata, credimi. Quote:
Da questo punto di vista riuscire a creare mock per creare test potrebbe essere un'ottima occasione per dare una sistemata al codice, in modo da renderlo meglio ingegnerizzato. Se invece è roba "spaghetti-code", come purtroppo prevedo da quello che hai scritto finora, allora leggi sotto. Quote:
L'ultimo anno alla Intel l'ho passato a scrivere o riscrivere centinaia di test per testare i nostri prodotti, usando fMBT (al quale ho contribuito pesantemente per Windows, e in parte per Linux). Con questo accedere ai widget e manipolarli è un gioco da ragazzi (e su Windows è ultra veloce). Quindi se il software di cui parlavi è così complicato che non riuscite (o non volete!) neppure a scrivere unit test, potreste scrivervi una test suite per casi d'uso che simulino abbastanza fedelmente il comportamento dell'utente. Quote:
Anche in ambito automotive tenere a bada i consumi è molto importante. Non è che, perché c'è una grossa batteria, ci si può permettere il lusso di consumare quanto vogliamo. Anche quando la macchina viene spenta, per questioni di ripartenza "istantanea", la circuiteria potrebbe trovarsi in modalità sospensione, e dunque consumare continuamente corrente. Quote:
Lo faccio vedere alla prole: magari gli viene voglia di imparare a smanettare con queste cose. Quote:
Pur essendo americano, preferisco rimanere in ambito europeo, e vicino all'Italia. La vita negli USA non mi è mai interessata né attratto (tutt'altro), eccetto in gioventù, dove è facile farsi prendere dal mito. Quote:
Ovviamente al netto delle specifiche del progetto. Se hai troppo roba da implementare, o delle sezioni troppo "time critical", il C potrebbe non essere sufficiente. Non è possibile, insomma, dare una risposta certa sull'argomento, senza scendere nei requisiti. Quote:
In tutta onestà, per certe cose vorrei avere le mani quasi completamente libere (ancora di più che con BareMetal OS). E' per questo che da tempo mi frulla in mente la realizzazione di un s.o. ridotto all'osso e che consenta di avere pieno accesso nonché controllo di tutte le risorse hardware. MetalOS sarebbe una manna per far funzionare molti emulatori, ad esempio, che al momento sono pesantemente castrati dagli innumerevoli layer fra codice dell'emulatore e hardware. Quote:
Con F# dovrebbe essere molto più facile, perché alla fine è basato su .NET, per cui ciò che produci in F# può essere "consumato" da C++/CLR, C#, IronPython, ecc., e viceversa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||
31-10-2017, 12:52 | #37 | |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Purtroppo non posso scrivere i dettagli su internet, ma sarebbe interessante far vedere (soprattutto agli studenti) come è fatto un sistema reale.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:44.