For faster navigation, this Iframe is preloading the Wikiwand page for Hybris (linguaggio di programmazione).

Hybris (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.

Hybris
linguaggio di programmazione
AutoreSimone Margaritelli
Data di origine2009
Utilizzoscripting procedurale
Paradigmiprogrammazione procedurale
Tipizzazionedebole
Implementazione di riferimento
Sistema operativoLinux e macOS
LicenzaGPL v3
Sito webwww.hybris-lang.org

Hybris, acronimo di hybrid scripiting language, è un linguaggio di scripting open source con tipizzazione dinamica, ovvero un linguaggio che non richiede la dichiarazione esplicita del tipo di una variabile ma capisce come trattare la variabile in questione in base al valore con il quale viene inizializzata e successivamente trattata, ed orientato ad oggetti che viene incontro alle esigenze degli sviluppatori che vogliono automatizzare determinate procedure in modo semplice e veloce. Anche se è un progetto giovane, nato nel 2009, è già ad uno stato maturo e funzionale pronto per essere utilizzato. Hybris nacque inizialmente come progetto personale di Simone Margaritelli, per poi essere distribuito sotto licenza GPL 3 e diventare un progetto pubblico.

La grammatica e il set di funzionalità integrate nella libreria standard sono state realizzate con tre soli scopi, scopi che riassumono abbastanza bene il target qualitativo del progetto:

  • Eliminare le caratteristiche inutili delle grammatiche finora esistenti per ottenere uno stile pulito, intuitivo e soprattutto che non comporti inutili sprechi di tempo per la scrittura del codice.
  • Includere nella libreria standard stessa quelle funzionalità che, benché non siano incluse nei “core” degli altri linguaggi, son diventate per qualità e/o per necessità lo “stato dell'arte” nel mondo della programmazione.
  • Mantenere una certa interazione a basso livello con il sistema operativo per fornire un linguaggio che, se pur di scripting ed estremamente astratto, abbia potenzialità simili e a volte analoghe a linguaggi compilati di basso livello.

Le caratteristiche principali del linguaggio

[modifica | modifica wikitesto]
  • Garbage collector mark and sweep per diminuire il consumo di risorse.
  • Tipizzazione dinamica con dati strutturati a contenuti misti.
  • Interazione a basso livello con il sistema tramite loading di librerie dinamiche e funzioni implementate in C.
  • Supporto sia per la programmazione procedurale, che per la programmazione ad oggetti, ereditarietà e overloading degli operatori.
  • Gestione delle eccezioni.
  • Due librerie standard, una per la programmazione procedurale ed un'altra per la programmazione object oriented, che possono coesistere nello stesso sorgente.

Tipologie supportate

[modifica | modifica wikitesto]

Come specificato precedentemente, hybris è un linguaggio a tipizzazione dinamica, di conseguenza non è necessario specificare il tipo di variabile durante la dichiarazione poiché tale tipo verrà automaticamente impostato da hybris stesso al momento dell'inizializzazione della variabile con un valore.

I tipi fondamentali di hybris sono i seguenti:

  • Booleano: Una tipologia che può assumere i valori "true" o "false".
  • Intero: Come è facile immaginare, l'intero rappresenta un numero intero (senza decimali), il cui range varia da un valore minimo di -(2^32 – 1) ad un massimo di 2^32 per i sistemi a 32 bit, mentre per quelli a 64 da -(2^64 -1) a 2^64.
  • Reale: Un numero che presenta dei decimali dopo la virgola o che comunque deve essere trattato come tale, la cui precisione arriva a 10 decimali dopo la virgola.
  • Carattere: Contiene appunto un carattere ascii, e di conseguenza il suo valore varia da 0 a 255.
  • Stringa: Una stringa di caratteri, può contenere un numero *teoricamente* infinito di caratteri nei limiti della memoria del computer.
  • Binario: Un tipo che serve a gestire dati di tipo binario non gestibili tramite gli altri tipi.
  • Array: Un insieme di valori di tipologia non necessariamente omogenea, affronteremo gli array più avanti con maggiore precisione.
  • Mappa: Un array associativo, anche di questo parleremo più avanti.
  • Alias: Un tipo particolare, utilizzato come una sorta di puntatore ad una funzione o comunque ad un'altra variabile alla quale fare riferimento.
  • Struttura: Un tipo di dato strutturato.
  • Classe: Un'estensione delle strutture che supporta anche delle funzioni interne, chiamate metodi.
  • Reference: Un riferimento ad una variabile, usato principalmente per passare argomenti a delle funzioni.

Utilizzo della libreria C tramite uno script

[modifica | modifica wikitesto]
   import std.*;
   include std.os.Dll;
   
   try{
       libc = new Dll( "libc.so.6" );
       
       foreach( i of 1..5 ){
           libc.printf( "Hello world from the number %d !\n", i ); 
       }
       
       libc.printf( "My process id is %d \n", libc.getpid() );
       libc.printf( "My UID is        %d \n", libc.getuid() );
       libc.printf( "My GID is        %d \n", libc.getgid() );
   }
   catch( e ){
       e.print();
   }

Applicazione di espressioni regolari

[modifica | modifica wikitesto]
   import std.*;
   
   foreach( mail of [ "evilsocket@gmail.com", "lamer@foo" ] ){
       if( mail ~= "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i" ){
           print( mail + " è un'email valida .\n" );    
       }
       else{
           print( mail + " NON è un'email valida .\n" );    
       }
   }

Creazione di threads

[modifica | modifica wikitesto]
   include std.os.Runner;
   
   class Greetings extends Runnable { 
       public method run( n ){
           println( "Hello " + n );
       }
   }
   
   try{
       runner = new Runner( new Greetings() );
       
       foreach( i of 1..100 ){
           runner.go( i );    
       }
       
       runner.join();
   }
   catch( e ){
       println(e);
   }

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
{{bottomLinkPreText}} {{bottomLinkText}}
Hybris (linguaggio di programmazione)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?