Archivio per la categoria ‘Informatica Teorica’

Panoramica sui servizi di Platform as a Service

In questo articolo vedremo cosa è e a cosa serve una Platform as a Service (comunemente denominate Paas) e daremo una breve disamina sui principali servizi disponibili online che le implementano. In successivi articoli entreremo nel dettaglio di alcuni di questi servizi.
Una Paas è un tipo particolare di servizio Cloud tramite il quale un Provider fornisce, non solo il servizio hardware ed il Sistema Operativo, ma anche le piattaforme applicative e tutta la cosidetta “solution stack” per poter pubblicare le proprie applicazioni. Una solution stack è un particolare insieme di software in grado di poter fornire un servizio: ad esempio l’insieme di web server, database ed il supporto ad un linguaggio di programmazione. Un altro esempio di solution stack è l’unione di Sistema Operativo, middleware, database e applicativi.

Il trend dei linguaggi di programmazione

Questo post differisce dai consueti articoli del blog in quanto andremo a vedere quali sono le tendenze nei linguaggi di programmazione, cioè quali sono quei linguaggi che negli anni hanno avuto una minor o maggior diffusione. Per analizzare questa tendenza utilizzeremo come fonte il sito della TIOBE Software (raggiungibile all’url http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html), la quale tiene traccia dell’utilizzo dei maggiori linguaggi di programmazione utilizzando il cosiddetto TIOBE Programming Community index.

Tenere traccia della diffusione di un linguaggio piuttosto che di un altro è di fondamentale importanza per un professionista che opera nell’ambito del Software Development, in quanto gli consente di capire se il suo bagaglio di conoscenze è attuale e competitivo nel panorama odierno dell’IT.

AOP: la programmazione Orientata agli Aspetti

In questo articolo daremo una definizione di Aspect Oreinted Programming e vedremo le differenze con l’Object Oriented Programming.

La programmazione orientata agli oggetti (OOP) è una tecnologia che aiuta il lavoro del Software Engineer in quanto il modello ad oggetti rappresenta il modo migliore per modellare il dominio del mondo reale. A questa fondamentale capacità sono poi correlate altri benefici quali l’incremento nella manutenibilità del codice e le aumentate possibilità di riuso dello stesso. La programmazione ad oggetti essenzialmente vede il sistema da modellare come un insieme di oggetti che collaborano tra di loro scambiandosi messaggi. Le classi ci permettono di nascondere i dettagli implementativi dietro a delle interfacce, il polimorfismo ci consente di ottenere un comportamento comune per dei concetti tra di loro correlati mentre l’ereditarietà ci permette a componenti più specializzati di cambiare un determinato comportamento senza cambiare l’implementazione di quelli più generici.

Edit Distance o Levenshtein Distance: un algoritmo di similarità tra stringhe

In questo posto vedremo l’algoritmo di Editi Distance [1] detto anche di Levenshtein Distance. La edit distance, o distanza di Levenshtein, tra due stringhe s1 e s2 il minimo numero di sostituzioni, cancellazioni o inserimenti che occorre effettuare per ottenere s1 da s2. Ad esempio, la distanza tra gtgcca e ggcga è 2 (bisogna inserire una t nella seconda stringa e sostituire la penultima g con c per ottenere la prima stringa).

WordNet: un database semantico-lessicale in formato elettronico

In questo articolo vedremo cosa è WordNet e come poterlo utilizzare in un programma Java tramite delle interfacce sviluppate ad hoc.
WordNet è stato sviluppato dal Cognitive Science Laboratory sotto la direzione del professore George A. Miller presso l’università di Princeton[1] ed è diventato una delle più importanti risorse per lo sviluppo di tecniche di linguistica computazionale e di altre aree associate.
WordNet è un sistema di gestione di un dizionario semantico-lessicale basato sulle teorie psicolinguistiche della memoria lessicale umana.

Tecniche di Matching e metriche di similarità tra grafi

In questo articolo vedremo alcune delle tecniche principali di Matching tra Grafi (orientati e non) e come sono state definite delle metriche di similarità tra di essi, prima di procedere però daremo delle definizioni preliminari.

Definizioni preliminari sui grafi

Un Grafo G (V,E) consiste di un set di vertici o nodi V, e un set di archi, E = V x V. Un grafo può essere orientato o non orientato; in un grafo non orientato, per u,v appartenenti a V, quindi (u,v) appartenenti ad E implica che (v,u) appartiene ad E.

Il Web Service Definition Language (WSDL)

WSDL è l’acronimo di Web Service Description Language[1], un linguaggio per la descrizione dei servizi web. Esso è una grammatica XML che si propone di descrivere un servizio web come una serie di end points capaci di scambiarsi messaggi. Da un certo punto di vista Wsdl è un Interface Description Language (IDL), come potrebbe essere Corba IDL o Microsoft IDL, e come tale è un linguaggio che definisce i tipi di dato, i messaggi e il tipo di comunicazione che ogni messaggio necessita; offre un grado di estendibilità che gli altri IDL non hanno, permettendo loro di scrivere i messaggi di scambio e i loro end point senza dover specificare il protocollo di rete che si occupa del trasporto.

Il file Wsdl specifica i parametri e i vincoli che stabiliscono le modalità di svolgimento della comunicazione, in cui qualunque elemento è astratto ed è un componente fondamentale, visto che consente di conoscere direttamente le possibilità e le funzionalità di qualunque web services.

Il Resource Description Framework (RDF)

Il Resource Description Framework è uno standard descritto dal W3C e adatto a descrivere la struttura di una parte della realtà. Per realtà intendiamo qualsiasi risorsa sia possibile identificare sulla rete con un indirizzo univoco, mentre per descrizione indichiamo l’insieme delle proprietà, degli attributi e delle relazioni con altre “realtà”

Il linguaggio XML

Sebbene il linguaggio HTML sia molto ricco dal punto di vista della visualizzazione, esso però non fornisce un modo standard di gestire i dati. Il linguaggio XML (Extensible Markup Language) viene a supporto di tale mancanza, in quanto è basato su una rappresentazione standard per lo spostamento di dati sul Web. Ciò consente di dichiarare con maggiore precisione il contenuto dei dati e di ottenere risultati più significativi nelle ricerche eseguite in più piattaforme.

I Semantic Web Services

In questo articolo vedremo cosa sono i Semantic Web Services, quali sono le ragioni che hanno portato alla loro definizione e quali sono i framework che li implementano.

Introduzione

Una descrizione semantica di un Web Service è necessaria allo scopo di ottenerne la sua scoperta, la sua composizione con altri Web Service e la sua esecuzione da parte di utenti e piattaforme eterogenee.

Le tecnologie esistenti per i Web Services forniscono solo descrizioni al livello sintattico, rendendo difficile per i richiedenti (requester) e per i fornitori (provider) interpretare o rappresentare asserzioni significative come il significato degli input e degli output o i vincoli applicativi.

Questa limitazione può essere rilassata fornendo un ampio set di annotazioni semantiche che arricchiscano la descrizione del servizio. Un Semantic Web Service è definito attraverso un’ontologia di servizio (service ontology) che consente l’interpretazione da parte delle macchine delle sue capacità oltre che l’integrazione in un dominio di conoscenza.

elettronica