- 2013-04-14 - Licence Fondamentale d'Informatique
samedi 20 avril 2013

Top 10 most popular programming languages


Top 10 most popular programming language
Programming languages faced ups and downs in their popularity and usage. A programmer who wants to stay in developer fields need to update themselves according to latest trend and demands of programming languages. Programming languages which were popular some years ago are not useful today. It is very important for a programmer or a new programmer who is going to start their career to learn such language which will be in trend for some time. Although no one can exactly predict which programming language will be popular in future.  So to stay in developer field programmers have to adopt right programming language time to time.
It is very difficult to know which programming language is being used most widely and which not. TIOBE Software Company publishes index of popular programming languages on monthly basis. Ratings are based on the number of skilled people over the world, third party vendors. The popular search engines like Google, Bing, and Yahoo are used to get the latest trends. Here is the list of Top 10 Most popular programming languages based on OCT 2012 ratings on TIOBE. This list does not tell best programming language.

10. Ruby

Ruby Programming Language
Ruby is a dynamic, reflective, general purpose object oriented programming language that combines syntax inspired by Perl with Smalltalk like feature. Ruby was developed by Yukihiro Matsumoto in the mid of 1990s. Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.

9. Perl

Perl Programming Language Perl is high level, interpreted, dynamic programming language. Perl was developed by Larry Wall in 1987 as a general purpose UNIX scripting language to make report processing easier. Science then it has undergone many changes and revisions. The latest stable version of Perl programming language is  5.16.1 released on 8 August 2012.

8. Python

Python Programming Language
Python is general purpose high level programming language designed by Guido Van Rossum which first appeared in 1991. The Python Syntax is said to clear and expressive. The important feature of this language is code readability. Python has a large and comprehensive standard library. Python is often used as scripting language, but it has also wide range of non scripting application. Most stable version of Python is 3.3.0 released on 29 September 2012.

7. Visual Basic

Visual Basic
                Visual Basic is the third generation event driven programming language. Visual Basic is Integrated Development Environment (IDE) from Microsoft. Visual Basic is designed easy to learn and use. Visual Basic was derived from Basic and enables the Rapid Application Development (RAD) of Graphical User Interface (GUI) application. Visual Basic access data using Data access object, remote data objects or ActiveX data objects.
               

6. PHP

PHP is the open source server side scripting language designed by Rasmos Lardorf which is first appeared in 1995. PHP was designed for web development to produce dynamic web pages. It is one of the first developed server side scripting language to be embedded into HTML document rather calling an external file. PHP is installed on more than 20 million websites and 1 million web servers. Software’s that include PHP are WordPress, Joomla, Concrete5, MyBB, Drupal, etc.

5. C#

C # Programming Languae
C# (C Sharp) is the multi-paradigm programming language which includes many programming discipline such as strong typing, functional, generic, object oriented (with classes) and component oriented. It was developed by Microsoft with in .NET initiative which appeared first in 2000. The most recent stable version of C# is 5.0 released in 15 August 2012.

4. C++

C++
                C++ (C plus plus) is the object oriented programming language developed by Bjarne Stroustrup at Bell Labs in 1979. Earlier its name was C with classes but in 1983 it was renamed with C++, putting an increment operator. It has the feature of object oriented such as classes. Windows operating system is developed using C++.

3. Objective-C

Objective-C
Objective c is general purpose, high-level, object oriented programming language. It was first appeared in 1983 designed by Brad Cox and Tom Love. It is the main programming language used by Apple for the OS X and iOS operating systems. It was selected as the main language used by NeXT for its NeXTSTEP operating system, from which OS X and iOS are derived.

2. Java

JAVA
                JAVA programming language was developed by James Gosling at Sun Microsystems (Now merged into ORACLE Corporation). It was first released in 1995 and since then it is most popular language in use, especially for client-server web applications. Java is a object oriented programming language designed to have few implementation dependencies as possible. Java programs runs on Java Virtual Machine (JVM) environment.  Java programs follow “write once run anywhere” (WORA) they need not to compile on every machine.

1. C

C Programming Language                C programming language developed in between 1969 and 1973 by Dennis Ritchie at Bell Labs. C is the most widely used programming language over the time. There is rarely few computer architecture which does not support c language. The C language used to develop device drivers and other complex software. UNIX operating system is the best developed software through c language. C language influenced many others programming languages like C++, Java, PHP, Perl, objective-c, C# and others. Learning C languages is little crucial, but once you learn it you can easily go with other languages like JAVA, C++, PHP these languages used mostly same syntax as C uses.
This list is based on TIOBE ratings of OCT 2012. Description, statics, facts of programming languages are taken from Wikipedia.
mardi 16 avril 2013

Les réseaux IP pour les nuls


Le protocole Internet est intimement lié à Linux. Dans cette première partie, nous rappelons brièvement l'histoire des réseaux à commutation de paquets puis détaillons les principales caractéristiques d'IP version 4.

Guerre froide

Bouclez la ceinture de votre chronoscaphe. Retour en 1962. L'Union Soviétique souhaite implanter des missiles nucléaires à Cuba. Dans ce contexte tendu, les Etats-Unis financent des projets de recherche visant au déploiement de réseaux de communication capables de fonctionner en cas d'endommagement partiel. Le schéma suivant présente trois topologies classiques :

Reseaux centralises, en etoile, distribue

Réseaux centralisés, en étoile, distribués


Les données de réseaux centralisés et en étoile transitent par un nombre restreint de noeuds privilégiés. Leur indisponibilité interdit toute communication globale.

Commutation de circuits

Ce modèle hérite de techniques remontant à l'invention du téléphone. La question s'est posée très tôt de la manière de mettre en relation n abonnés. Dans l'idéal, une ligne relie directement chaque paire d'abonnés. Un calcul rapide établit qu'un tel câblage nécessite L lignes avec

      n * (n -1)
L = ______________
          2
Une interconnexion complète est pratiquement impossible. Il faudrait 1 million de lignes pour relier seulement 1 500 abonnés. Les centraux téléphoniques assurent au plus m communications simultanées, m << n. M est choisi en fonction du trafic estimé. A l'origine, des opératrices raccordaient manuellement les abonnés. Les autocummutateurs électromécaniques puis électroniques prirent progressivement le relais. Mais le principe reste identique : établir un circuit électrique entre les abonnés.

Commutation de paquets

Août 1964. Sous l'égide de l'US Air Force, Paul Baran publie un mémorandum intitulé "Introduction aux réseaux de communication distribués". Ce document jette les bases des réseaux informatiques modernes. Le paquet numérique de données devient l'unité des échanges. Ces paquets circulent indépendamment sur les réseaux, plusieurs chemins menant généralement d'une source à une destination. Le calcul de la route est de la responsabilité des équipements intermédiaires : les routeurs. Les paquets sont regroupés par le destinataire. Cette approche présente plusieurs avantages. Le délai d'obtention de la ligne disparaît. Il devient possible d'équilibrer le trafic entre plusieurs routes, ou de contourner une route temporairement indisponible. Cependant, le temps de calcul des routes dépasse le plus souvent largement le temps de propagation du signal. Une situation pénalisante lors du transport de données de type voix (les réseaux virtuels de type ATM résolvent en partie ce problème).

Arpanet

1969. L'ARPA (Advanced Research Project Agency) finance la création d'un réseau à commutation de paquets expérimental : ARPANET. Il deviendra opérationnel en 1975.

IP

En 1983, un grand pas est franchi avec l'implémentation de TCP/IP dans la version Berkeley d'Unix (BSD). Cette norme ouverte mettra une dizaine d'années à s'imposer.

Adresses IP

Une adresse IP identifie une machine d'un réseau. Une adresse IP publique est globalement unique. Chaque adresse est codée sur 32 bits et représentée sous la forme d'un quadruplet d'entiers dans l'intervalle [0..255]. Soit un total de 4.3 milliards de combinaisons (2^32).

Representation adresse IP

Représentation adresse IP


Les réseaux communiquent par le biais de plates-formes d'échanges : les dorsales.Le processus de décision du chemin des paquets porte le nom de routage. Des tables contiennent les informations nécessaires à l'aiguillage statique ou calculé dynamiquement. Comme on ne peut envisager d'ajouter une entrée pour chacune des machines de l'Internet, on procède à l'agrégation des adresses. On introduit à cet effet la notion de préfixe réseau. N des bits les plus à gauche de chaque adresse identifient un unique réseau. 3 classes principales de réseaux couvrent une vaste gamme de besoins, de l'intranet à l'infrastructure complexe d'un FAI. Dans la suite, nous noterons A/n les n bits de plus fort poids (les plus à gauche) d'une adresse A.

Classe

Préfixe

Bits réseau

Adresses

A080.*.*.* à 127.*.*.*
B1016128.0.*.* à 191.255.*.*
C11024192.0.0.* à 223.255.255.*
Chaque réseau de classe A dispose de 16.7 millions d'adresses. Ce nombre tombe à 65536 pour les réseaux de classe B et à 256 pour les réseaux de classe C.

Protocole IP

Un protocole informatique normalise les échanges d'information entre des systèmes physiques hétérogènes. Les protocoles de communication sont organisés en couches successives reliées par des interfaces. Cette approche rend possible la programmation de piles de protocoles complexes.

Les couches IP

Les couches IP


Nous passons par abstractions successives du médium physique (Ethernet, Token Ring ...) aux applications (messagerie, web ...).

Modèle client / serveur

Le protocole IP gère la communication entre applications sur le mode client/serveur. Une machine A met à disposition des ressources. Une machine B accède à ces ressources.

Modele client/serveur

Modèle client/serveur


Ports de communication

Un service met en relation deux machines à un instant t. Plusieurs transactions peuvent avoir lieu simultanément. Dans ce but, IP introduit la notion de port. Les ports sont numérotés de 0 à 65535. Une adresse IP et un port identifient un côté de la connexion. On parle de socket. Deux sockets caractérisent complètement la connexion. Une bibliothèque C relativement normalisée facilite la programmation de logiciels exploitant IP.

Well Known Services

Par convention, les services Internet les plus connus sont attachés à des ports fixes dans l'intervalle [0..1023

Port

Service

Fonction (exemple)

25SMTPEnvoi de courrier relayé par votre FAI
80HTTPConsultation de sites web
110POP3Récupération du courrier hébergé par votre FAI
119NNTPConsultation de forums de discussion
Ces ports sont mentionnés par exemple dans les modules de configuration de Kmail, Krn, Netscape Communicator ...

Couche IP

La couche IP gère la transmission de paquets d'un émetteur A à un destinataire B sans garantie d'acheminement ou d'ordre. Par contre, elle opère le fractionnement des paquets en unités de petite taille, ce en accord avec la capacité des supports physiques rencontrés.

Paquet IP

Paquet IP


Les couches de plus haut niveau s'appuient sur la couche IP pour le transport. En clair, les paquets des couches supérieures sont encapsulés dans des paquets IP. 

Encapsulation IP

Encapsulation IP


Couche ICMP

La couche ICMP (Internet Control Message Protocol) fournit des messages de contrôle et d'information aidant à la synchronisation du réseau. Plusieurs outils utilisent ICMP. C'est le cas de la commande ping qui permet de vérifier l'activité des équipements. Vérifiez que le paquetage tcpdump est présent sur votre système. Installez-le si nécessaire. Sous Red Hat :

rpm -ivh tcpdump-3.6.2-1.i386.rpm
Nous supposons que vous disposez d'un accès Internet correctement configuré. Ouvrez deux fenêtres Xterm. Connectez-vous à Internet. Dans la première fenêtre, lancez

tcpdump -i <interface>
<interface> vaut ppp0 pour une liaison modem analogique. Dans la seconde fenêtre, lancez

ping 212.198.253.142
Vous obtenez le résultat suivant

PING 212.198.253.142 (212.198.253.142): 56 data bytes
64 bytes from 212.198.253.142: icmp_seq=0 ttl=51 time=205.1 ms

18:04:17.378349 212.83.146.178 > 212.198.253.142: icmp: echo request
18:04:17.570056 212.193.253.142 > 212.83.146.178: icmp: echo reply
Vous visualisez les paquets échangés avec le serveur de Linux Pratique.

Couche UDP

La couche UDP sert à l'émission rapide de paquets. Elle ne garantit pas leur acheminement. On l'utilise lorsque la perte de données n'est pas critique, par exemple pour la supervision de réseaux.

Couche TCP

La couche TCP assure la réception correcte et ordonnée des paquets. Il s'agit d'un protocole fiable en mode connecté. Deux machines impliquées dans un échange établissent une connexion au moyen d'un échange initial en 3 étapes. On parle de poignée de mains (handshake).

Reprenons l'exemple du site web de Linux Pratique. Ouvrons une connexion sur le port 80

telnet 212.198.253.142 80
Vous obtenez le résultat suivant

18:24:43.476047 212.83.140.26.1431 > 212.198.253.142.www: tcp 0
18:24:43.750049 212.198.253.142.www > 212.83.140.26.1431: tcp 0
18:24:43.760250 212.83.140.26.1431 > 212.198.253.142.www: tcp 0
 
-