Nit est un langage expressif avec un syntaxe à la script, un système de type sympathique et qui vise l'élégance, la simplicité et l'intuitivité.
Commodité offerte au programmeur pour exprimer ses concepts et besoins.
La programmation orientée-objets et orientée-préoccupations (concerns) permet au programmeur d'abstraire et d'organiser ses idées.
Langage offrant des instructions simples et une grammaire souple permettant un prototypage rapide car les structurations verbeuses et inutiles sont éliminées.
Le typage statique permet de prévenir des erreurs lors du développement ainsi que d'aider la compréhension du code et des API
En résolvant plus de problème qu'il en cause, le typage statique de Nit évite les frustrations et les verbosités inutiles.
Il ne faut pas se tromper de combat: le programmeur ne devrait pas avoir à se battre avec son langage de programmation.
- élégance: les concepts théoriques sur lesquels se basent Nit sont puissants et cohérents
- simplicité: KISS. Toute complexité non nécessaire devrait être évitée
- intutivité: POLA. Les concepts et la sémantique des constructions du langage doivent sembler naturels au programmeur, que celui-ci soit débutant ou déjà habitué à un autre langage.
Nit en bref: Ruby (ou Python) avec des types statiques, un compilateur et un vrai modèle objet.
Impossible d'intégrer certains nouveaux traits de langages sans briser les fondements langages existants
Impossible de travailler sur les fondements des langages existants sans briser les programmes existants
Il n'y a aucun langage a objet moderne, a typage statique, cohérent dans sa spec
- Spécification sur 8 pages (marge 2mm, double colonne, 5pt)
- 146 packages
- 11 maintainers
- 28 contributors
- 33 tags
- 850 modules
- 9294 classes
- 50418 methods
- 302648 lines of code
Voir http://nitlanguage.org/catalog/
Ajouter des choses à des classes existantes
- nouvelles méthodes
- nouveaux attributs
- redéfinition de méthode
- ajout de super-classes
redef class Int
fun fib: Int do
if self 2 then return self
return (self - 1).fib + (self - 2).fib
end
end
Programmation par aspect
- Sans les problèmes de tissage
Programmation par monkey-patching
- Vérifié statiquement
Le type statique des variables locales change automatiquement
Plus utile que l'inférence de type
var a
a = "Hello" # a est un String
print a.to_upper
a = 5 # a est un Int
print a.fib
Inutile de tester, puis caster, puis ranger dans une variable locale.
var a: Objet = 5
if a isa Int then
print a.fib
else if a isa String then
print a.to_upper
end
Plus fort
var a: Object = 5
if not a isa Int then return
print a.fib
Contrôle statiquement la présence de null
var a = "hello".search("ll")
# a est nullable de string
print a # <= refusé
if a != null then print a # accepté
print a or else "(null)" # accepté
TODO
- vers C, C++, Java, LLVM, Python, Objective-C
N'exposer la puissance que si nécessaire
#!/usr/bin/env nit
print "hello world"
Sous le tapis, il n'y a qu'objets, polymorphisme et modules.
Stats des outils:
- 184 modules
- 2625 classes
- 8662 methods
- 88916 lines of code
Voir http://nitlanguage.org/catalog/p/nitc.html
TODO
Voir http://nitlanguage.org/tools/nitc.html
nit -e 'print "hello world"'
Voir http://nitlanguage.org/tools/nit.html
nitdoc, outil d'avenir
Voir http://nitlanguage.org/tools/nitdoc.html
TODO
Voir http://nitlanguage.org/tools/nitunit.html
- nitx
- nitls
- nitpick
- nitpretty
- nitserial
- nitmetrics
- nitlight
Voir http://nitlanguage.org/tools/
Framework de serveur web.
Voir http://nitlanguage.org/catalog/p/nitcorn.html
- Planifier des rencontres
- Sondages simples
- Reserver des pizzas
Voir http://nitlanguage.org/catalog/p/opportunity.html
- Compilateur de site web wiki
- Stable, robuste efficace
- Basé sur git, connectable avec github
Voir http://nitlanguage.org/catalog/p/nitiwiki.html
Ludification du développement sur Github.
Les contributeurs de projets hébergés chez github sont les joueurs et s'affrontent sur les dépôt de code pour gagner nitcoins et gloire.
Voir http://nitlanguage.org/catalog/p/nitrpg.html
Liste de diffusion qui permet d'être informé sur les bières disponibles à la brasserie Benélux.
Voir http://nitlanguage.org/catalog/p/benitlux.html
Tape-taupes avec des particules.
Voir http://nitlanguage.org/catalog/p/crazy_moles.html
Casse-tête où il faut connecter des monstres trop minions sur une grille.
Voir http://nitlanguage.org/catalog/p/friendz.html
Êtes-vous capable de mémoriser une séquence de figures?
Voir http://nitlanguage.org/catalog/p/memory.html
Un jeu d'action multijoueurs où tank s'affrontent sur un terrain généré procéduralement.
Voir http://nitlanguage.org/catalog/p/tinks.html
TODO
TODO
TODO
TODO