Everything sux

Monday, September 13, 2004

[C#] Why not

In risposta a questo

  1. pessimo motivo, come dice perlis "se imparare un nuovo linguaggio non cambia il tuo modo di pensare a che serve"?
  2. C# viene venduto da un bel po' come un java migliore. Giacché manca una confronto con, tanto per dire, VisualWorks, direi che è inutile gareggiare con un coniglio senza zampe anteriori. Ma è stupendo sapere che i .nettisti si sentono soggetti a scarsa considerazione da parte dei Javanesi. Potrebbero forse comprendere, un giorno, come si sente il resto del mondo della programmazione.
  3. Le motivazioni dei generic con type erasure sono in primis il mantenimento della compatibilità. La JVM non deve cambiare, il che significa mantenere la compatibilità con una quantità di installazioni (e di società che producono sw per la jvm o la manipolazione di bytecode) enorme. La MS non ha questo problema, il perché viene lasciato come esercizio per il lettore. In secundis (il motivo vero) il JCP non ha fatto altro che standardizzare un meccanismo già rodato da anni in Generic Java (e Pizza).
  4. Tre bis, in verità. Non si capisce cosa si intenda a questo punto. Prima si parla di conformismo a proposito di una feature che è unica in java, e per la quale lo stesso autore di C# sta cercando un'evoluzione migliore. Poi sembra ci sia una curva verso un generico "voglio fare quello che mi pare, tanto non sono sciocco" che suona vagamente come l'inno dei propositori di ruby o python.
  5. "ma vale veramente la pena costringere il mio cliente a spendere il 10-20% in più sull'hardware per poter far girare una applicazione talmente generica da poter funzionare ugualmente su Windows che su Linux o Mac?"
  6. Dipende, vale davvero la pena di scrivere un'applicazione lato server che girerà solo su una minima parte dei server la fuori? Vale davvero la pena di scrivere un'applicazione managed rispetto ad una nativa? Il simpatico ragionamento porta alla ovvia conclusione che si dovrebbe poter usare un linguaggio di alto livello, che non abbia problemi di portabilità, che compili efficentemente quanto il C.. Forse, Andrea, vuoi Ocaml e CMUCL ?

Pace e bene.

3 Comments:

  • 1) Beh, se tu adegui il tuo modo di pensare ad ogni linguaggio che usi, devi avere le idee un po' confuse... Personalmente, il mio modo di pensare è il punto fermo e il linguaggio è solo uno strumento. Ho programmato in Assembler, C, C++, Visual Basic, Java, ma il mio modo di analizzare il problema è sempre stato orientato agli oggetti. C# (e Java) mi danno degli strumenti migliori. Infatti il mio motivo è affettivo. Mi piace scrivere ":" invece che implements e non ho nulla contro chi la pensa al contrario di me. Ognuno ha i propri affetti.

    2) beh, non posso che essere in disaccordo. Che necessità c'è di aggiungere un nuovo costrutto ad un linguaggio se poi il suo uso non è consigliabile. Sarà anche nobile il poter usare la stessa VM (ma permettimi di dubitarne, diffido sempre del marketing), ma allora tanto vale continuare a scrivere con il Java di prima. Se decido di andare avanti lo faccio per migliorare i risultati oppure le vendite. Sun ha scelto la seconda, MS la prima.

    3) Non capisco il significato dell'aggettivo "unica" nel contesto della tua frase, ma ritengo si tratti di un elogio. Questo è uno degli aspetti che ritengo più "sovietici" in ambito Java. Il linguaggio non mi deve obbligare a fare bene le cose, altrimenti è lui il bravo programmatore e non io. Il progettare bene, l'uso dei concetti dell'oop, l'uso dei design-pattern, e anche dei try/catch è una mia scelta. E lo è anche il decidere di non usarli, magari a ragion veduta.

    4) Non ho alcun dubbio che l'uso di una framework managed sia una soluzione eccellente, altrimenti starei ancora programmando in C++, ma devo avere anche la possibilità di potermi rivolgere al S.O. e chiedergli di darmi il massimo. Sicuramente dovrò incapsulare il più possibile queste forzature e anzi, l'ambiente managed deve aiutarmi a tenerle sotto controllo, ma devo poterle fare. E non mi rivolgo solo a Windows, ma anche a tutti gli altri sistemi. Perchè devo fare finta che sotto di me ci sia il vuoto?

    Grazie dello scambio dialettico.

    Andrea Boschin

    By Anonymous Anonymous, at September 13, 2004 at 3:20 PM  

  • ri-rispondo punto per punto:

    1- Quello che stai dicendo è che non usi funzioni in quanto in asm nn ci sono, che nn usi eccezioni, ne mixin, ne gli iteratori, ne funzioni di ordine superiore, ne funzioni generiche, non usi l'AOP (ora questo msg è buzzword compliant)o il DbC . Se il tuo modo di affrontare i problemi è sempre stato rimasto uguale, imparando un nuovo linguaggio potresti scoprire che non è quello migliore in ogni caso.

    2-chi dice che il suo uso nn sia consigliabile? Leggendo tuoi vecchi post sembra che tu si convinto che i generic di java rallentano la jvm. Non è così, sono veloci quanto prima, semplicemente aggiungono un livello di type safety necessario in un sistema di tipi tonto come quello di java (e di c#). E questo livello esiste a livello di compilazione, non ha alcuna necessità di stare a livello di jvm.

    3- non un elogio, lungi da me. Semplicemente non esistono altri linguaggi main stream con le CE.
    Il linguaggio che usi, C# ti impone di programmare ad oggetti. Perché quello è giusto e le CE non lo sono?

    4- rivolgerti al SO e chiedergli di darti il massimo non mi è chiaro cos significhi. Potrebbe essere un riferimento a P/Invoke o a JNI.

    By Blogger verbat, at September 14, 2004 at 3:31 AM  

  • e grazie a te :)

    By Blogger verbat, at September 14, 2004 at 3:32 AM  

Post a Comment

<< Home