PDA

View Full Version : Pro e contro di sviluppare intere applicazioni in javascript


das
31-08-2015, 19:20
Per motivi lavorativi mi sto accostando per la prima volta al javascript. Mi sto rendendo conto che in effetti è utilizzabile ben al di là delle applicazioni web.

Praticamente qualsiasi software che non richieda troppa potenza computazionale potrebbe essere fatto in javascript. E ha il vantaggio indiscutibile di funzionare su PC, tablet,cellulare e su qualsiasi sistema oprativo di oggi e probabilmente di domani.

Per le parti (rare in molte applicazioni) che richiedono potenza di elaborazione uno può sempre appoggiarsi a al C, comunque cercando di usarlo il meno possibile.

Secondo voi quali svantaggi potrebbe avere iniziare a sviluppare in questo linguaggio software che tradizionalmente sono fatti in .NET, C++ etc. ?


L'unico che vedo al momento è che è più difficile proteggere i sorgenti (anche se si può usare l'offuscamento)

les2
31-08-2015, 19:51
i sorgenti non sono assolutamente proteggibili, sappilo subito ;)

svantaggi? dipende cosa ne devi fare.
per cose piccole, veloci e non troppo complesse (di elaborazione e gestione dei dati, non di grafica) va benissimo.
se lo fai girare in un motore aggiornato (chrome o il nuovo microsoft) godi anche di accellerazione video e performance notevolissime.
occhio alla memoria e a qualche effetto indesiderato (gli errori html, css e javascript vivono come un unico organismo maligno).

non ci vedo nulla di male, ormai sono molti che spingono verso questa strada.
si sposa con sqlite benissimo, occhio invece che spesso hi limitazioni su filesystem.


non ha nulla a che vedere con il c, ovviamente.

71106
31-08-2015, 23:14
Vantaggi di sviluppare in JavaScript anziché C++:

cross-platform (virtualmente ogni dispositivo moderno è in grado di eseguire ES5, molti eseguono già ES6);
più facile da scrivere;
garbage collected;
API più complete e potenti, sia nel browser che in Node.js.


Svantaggi di sviluppare in JavaScript anzichè C++:

la disciplina di typing di JavaScript è pessima
il design del linguaggio impedisce molte ottimizzazioni da parte dell'interprete o compilatore e i produttori di questi ultimi sono costretti a fare dei giri folli per ottenere dei risultati comunque subottimali;
garbage collected.

71106
31-08-2015, 23:19
In altre parole, aggiungo, dovresti preferire C++ se hai esperienza di almeno una delle seguenti condizioni:

commetti frequentemente errori di programmazione che un sistema di tipi statico eviterebbe;
vuoi che il programma risultante abbia performance deterministiche, ad esempio perchè le vuoi misurare;
il tuo programma scritto in JavaScript è lento e non lo si può ottimizzare più di così (questa lasciala perdere: se ti succede vuol dire che hai ben altri problemi).

OoZic
31-08-2015, 23:25
Cosa intendi per "intere applicazioni"?

Parliamo di mobile? iOS/Android/WP?
Parliamo di desktop?
Parliamo di SPA (Single Page Application)?

E' un termine che vuol dire tutto e niente.

E' chiaro che non ci si fa il nuovo Far Cry in Javascript.

Detto questo in tutti quegli ambiti viene piu' o meno utilizzato per diversi scopi.

Un esempio: Atom.io, l'editor di testo creato da GitHub, e' un app desktop (che gira su win/osx/linux) fatta con javascript (progetto node-webkit / electron)

71106
31-08-2015, 23:39
E' chiaro che non ci si fa il nuovo Far Cry in Javascript. Io ancora devo vedere una dimostrazione formale di queste asserzioni alla hacker Unix old school anni '70 (col nome del videogioco rimpiazzato con uno dei tempi nostri).

Finora ho visto solo l'Unreal Engine girare dentro browser HTML5 attraverso WebGL, LLVM, Emscripten e baracconi vari. Il che non fa altro che dimostrare che esiste almeno un programma JavaScript che fa grafica di fascia alta dentro il browser. Generato da un compilatore, però esiste.

cdimauro
01-09-2015, 06:23
Bisognerebbe vedere cosa riesce a muovere.

Riguardo all'argomento del thread, aggiungo pyjs (http://pyjs.org/).

das
01-09-2015, 07:02
Cosa intendi per "intere applicazioni"?

Parliamo di mobile? iOS/Android/WP?
Parliamo di desktop?
Parliamo di SPA (Single Page Application)?

E' un termine che vuol dire tutto e niente.

E' chiaro che non ci si fa il nuovo Far Cry in Javascript.

Detto questo in tutti quegli ambiti viene piu' o meno utilizzato per diversi scopi.

Un esempio: Atom.io, l'editor di testo creato da GitHub, e' un app desktop (che gira su win/osx/linux) fatta con javascript (progetto node-webkit / electron)
Ho installato Atom.io per curiosità, l'ho guardato poco ma non ho capito su quale motore si basa e se è possibile farlo girare da una pagina html.

Comunque io lavoro in due ambiti:
-1 embedded in cui uso assembler/C
-2 per PC (quando non ho vincoli uso lazarus)

Nel caso per PC non devo quasi mai fare cose che richiedono una potenza di calcolo mostruosa. Si tratta dei classici:
- accedere a un database
- mostrare dati
- mostrare figure
- fare modifiche
etc. etc.
qualche volta devo fare programmi per PC che controllino le mie periferiche embedded, quindi devo poter sfruttare l'USB (e questo credo sia più difficile farlo con javascript, passerò all'ethernet così risolvo)


Finora usavo lazarus per la facilità con cui si disegna l'UI e poi perchè mi piace il pascal, ma in effetti ha i suoi limiti

Non avevo mai usato javascript fino ad ora ma mi sto rendendo conto di come potrebbe diventare per me il linguaggio di riferimento, poi se una cosa non la posso fare con quello uso altro.
Soprattutto sei sicuro che funzionerà anche con i sistemi operativi del futuro, non è vincolato ad api particolari.

Java era nato con le stesse intenzioni ma era gravato da una macchina virtuale molto più pesante di un qualsiasi browser e soprattutto se SUN decide di non aggiornarla più sei finito.

I vari browser continueranno ad esistere e ad essere mantenuti per molti anni su tutti gli OS e su tutti i device e il loro engine mi sembra oramai abbastanza veloce da poter creare un interfaccia grafica reattiva.

Un altro svantaggio che mi viene in mente però è la difficoltà di debugging.

71106
01-09-2015, 08:37
Ho installato Atom.io per curiosità, l'ho guardato poco ma non ho capito su quale motore si basa Ti è stato detto: node-webkit / electron.


e se è possibile farlo girare da una pagina html. Non è un uso previsto, bisogna fare un minimo di reverse engineering per estrarre gli asset.


qualche volta devo fare programmi per PC che controllino le mie periferiche embedded, quindi devo poter sfruttare l'USB (e questo credo sia più difficile farlo con javascript, passerò all'ethernet così risolvo) Prima googlata della durata di una frazione trascurabile del millisecondo: https://github.com/nonolith/node-usb

Ma di sicuro esistono API più adatte di livello più alto.


Un altro svantaggio che mi viene in mente però è la difficoltà di debugging. Non ho idea di cosa parli. Per lo sviluppo lato client usi Chrome / Chromium, vero? Hai mai premuto F12?

Per quanto riguarda lo sviluppo per Node.js, c'è il comodissimo node-inspector (https://www.npmjs.com/package/node-inspector).