|
Publicité ' | ||||||||||||||||||||||||
|
|
#61 | ||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Un autre test :
Code :
|
||
|
|
00
|
|
|
#62 | |
|
Inscription : janvier 2011 Messages : 30 ![]() |
Citation:
|
|
|
|
00
|
|
|
#63 | |
![]() ![]() Inscription : juin 2002 Messages : 2 034 ![]() |
Citation:
Je vais essayer de prendre le temps de lire le document fourni et de faire quelques tests pratiques avec le compilateur ce we Au vue des premiers résutats obtenus par LLB, j'ai la vague impression que l'implémentation de ton compilateur est très naïve (comprendre par là que tu fait une simple conversion un pour un des instructions safe-C vers l'assembleur). |
|
|
|
10
|
|
|
#64 | ||
|
Membre chevronné
![]() Inscription : mars 2010 Messages : 281 ![]() |
Citation:
Citation:
Si ta seule utilisation du C est de parcourir un tableau, en accédant à chaque case via son indice, quel est l'intérêt de faire du C ? Pourquoi utiliser un langage si bas niveau, avec des types si faible, si ce n'est pas pour exposer un minimum la structure des types de donnée sous jacent ? Pour poser la question différemment, quelle est la cible, l'utilisation typique, de ton langage ? |
||
|
|
10
|
|
|
#65 | ||||||||
|
Membre chevronné
![]() Inscription : mars 2010 Messages : 281 ![]() |
Holy crap !@#
Est ce qu'on peut voir l'assembleur produit par: (désolé, je n'ai toujours pas windows Code :
ou bien Code :
Code :
est ce que Code :
|
||||||||
|
|
00
|
|
|
#66 |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
je viens de lire rapidement ce post, et j'ai une petite question.
personnellement quand on me parle de sûreté de fonctionnement ou de langage sécurisé j'ai tendance a penser à ADA. Comment safe-c se démarque t'il par rapport a ce langage?
__________________
bazar: http://www.improetcompagnie.com/publ...ctacles-6.html BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil Emacs Wiki: http://www.emacswiki.org/ En attente de ce que produira: http://www.pushmid.com |
|
|
10
|
|
|
#67 |
|
Membre Expert
![]() Mounir OrfiInscription : avril 2007 Messages : 673 ![]() |
__________________
To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER -- |
|
00
|
|
|
#68 | |||
|
Inscription : janvier 2011 Messages : 30 ![]() |
j'ai regardé hier comment un compilateur optimisé traduisait :
Code :
J'en conclus que pour optimiser ce genre de boucle le compilateur doit probablement comparer le modèle de boucle avec des centaines de modèles de boucles standard simples qu'il garde dans une bibliothèque, et encore ça ne marche que sur un microprocesseur particulier qui a le genre d'intructions curieuses comme rep movsb. Bref, dur dur d'optimiser .. Citation:
j'ai beaucoup d'admiration pour les concepteurs d'Ada (qui sont français disons-le en passant), j'ai étudié la version 1983 de ce langage en détail quand il a été publié. Il ont vraiment montré ce qu'était un langage pour les applications très sécurisées (ex: sous-marins nucléaires, missiles, Ariane, signalisation du tunnel sous la manche) en vérifiant absolumment tout et en misant sur la clarté d'écriture. Le manuel de référence de 1983 est un exemple de précision et d'exactitude. Ensuite j'ai été horrifié en voyant comment les gens du Département de la Défense avaient modifié Ada durant la révision 1995 du langage : Ada était déjà un langage énorme, mais là il explosait carrément en complexité et en règles de toutes sortes. Il auraient pu le simplifier et retirer des choses, mais là ça a été un désastre. Ada a choisi une syntaxe 'Pascal' qui est sans doute plus lourde à écrire, actuellement tous les langages utilisent la syntaxe 'C'. Pour un slice de tableau en Ada on doit spécifier l'indice inférieur et supérieur au lieu de l'indice inférieur et de la longueur comme j'ai choisi en Safe-C, ce qui rend assez complexe les calculs d'indice et de strings (ça ne se voit pas quand on étudie le langage, mais -j'ai écrit pas mal de code source Ada- ça donne une impression de lourdeur quand on l'utilise). On ne peut que recommander d'étudier Ada au niveau théorique, on en apprend beaucoup. Au point de vue utilisation pratique le langage est un peu lourd à utiliser parce que la syntaxe Pascal a des conséquences de toutes sortes (par ex: les tableaux ne commencent pas forcément à zéro ce qui peut sembler un mieux pour le programmeur, mais en fait à l'usage, gérer 2 bords de tableau se révèle plus complexe qu'un seul). Je me suis inspiré d'Ada pour certains concepts (sécurité, librairies, packages et génériques) en les simplifiant fortement, et même en avoir amélioré certains ce qui n'est pas difficile 15 ans après et vu les nombreuses réactions et propositions qu'à eu Ada dans les revues spécialisées. En Ada les structures (appelés records) incluent le discriminant, alors qu'en Safe-C il est stocké à l'extérieur. Ada a introduit les mode de passage de paramètres in, in out, et out. Une très bonne idée pour clarifier, mais beaucoup de gens considèrent maintenant qu'un mode 'ref' aurait été mieux que 'in out' (ça crée une faille qui a été publiée, mais il est trop tard pour changer). Ada a choisi de ne pas préciser la longueur d'un "integer", ce qui fait que chaque implémentation peut avoir une taille différente. Au lieu de ça Ada permet de "construire" soi-même un type "int" dans le range qu'on souhaite. Mais à force de vouloir faire trop théorique, ça en devient compliqué. Il est bien plus simple de fixer dans le standard que int c'est 4 bytes. En 1983 il n'était sans doute pas encore certain que toutes les machines utiliseraient des bytes à 8 bits (certaines en avaient 9), Ada voulait être sûr de pouvoir être portable partout donc ne précisait rien sur la longueur des types. Le C a d'ailleurs ce même problème de non-portabilité des types de base. Kernigan et Richie ont créé le C sur le tas grâce à leur expérience pratique, les concepteurs Ada sont partis d'un cahier des charges avec une approche théorique, méthodique et organisée. Pour faire un bon langage il faudrait idéalement les deux. p.s: il faut que je me cache maintenant au cas où un adepte d'Ada passerait sur le forum, j'ai déjà les gens de C++ et cyclone qui veulent ma peau, sans parler des spécialistes en compilateurs optimisés |
|||
|
|
11
|
|
|
#69 | |||
|
Membre chevronné
![]() Inscription : mars 2010 Messages : 281 ![]() |
Citation:
De l'intérêt de ne pas écrire son propre back-end... |
|||
|
|
20
|
|
|
#70 | |
|
Inscription : janvier 2011 Messages : 30 ![]() |
Citation:
Rendez-vous l'année prochaine sans doute pour une version 2.0. Cette année ma priorité c'est d'avoir des librairies puissantes et simples à utiliser, et couvrant tous les domaines (fenêtres, traitement d'image, réseau, encryption, fichiers isam, ..). J'ai ces librairies en C, je voulais initialement les convertir simplement en Safe-C mais je me suis pris au jeu à les améliorer et à les moderniser donc ça me prend plus de temps que prévu. |
|
|
|
00
|
|
|
#71 | |
|
Expert Confirmé Sénior
![]() Thierry ChappuisEnseignant Chercheur Inscription : mai 2005 Messages : 3 481 ![]() |
Je n'ai pas l'habitude de réveiller un fil qui dort depuis deux mois, mais j'ai eu du plaisir à suivre la discussion, même avec un petit décalage
Citation:
En ce qui concerne la conception des langages de la "famille" du C, on a me semble-t-il déjà pas mal fait le tour de la question. Aujourd'hui, je n'ai pas l'impression qu'il y a encore de la place pour un nème langage C-like. Pour innover, il convient de plancher sur de nouveaux paradigmes permettant de supporter efficacement les défits auxquels est confronté le programmeur d'aujourd'hui. Dans ce contexte, Erlang, conçu par Ericsson, se profile par exemple comme une technologie intéressante pour les systèmes concurrents et temps réel. En ce qui concerne les benchmarks proposés dans ce fil, c'est toujours une tâche délicate de les évaluer à leur juste valeur. Sur des tests bien choisis, le RPython de PyPy s'est montré plus rapide que le C. Un programme python tournant sur un PyPy JITé, bien que plus rapide que l'implantation CPython de référence, reste toutefois en moyenne significativement plus lent qu'un programme écrit en C. Toutefois, pour 80% du code scientifique que je suis amené à produire, python se montre simple d'utilisation, propose une performance satisfaisante et offre le niveau de sécurité mémoire 100%. J'ai également fait quelques tests avec OCaml pour du code scientifique. Les performances de ce langage sont intéressantes et la philosophie sous-jacente est très différente du C. Thierry
__________________
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow FAQ-Python FAQ-C FAQ-C++ +
|
|
|
00
|
|
|
#72 |
|
Membre éclairé
![]() Étudiant Inscription : décembre 2004 Messages : 348 ![]() |
Salut,
je trouve l'idée du Safe-C extrêmement intéressante du point de vu web/hébergeur de CGI sur des serveurs non dédiés : Imaginons que je suis un hébergeur de sites web : j'ai des serveurs dédiés, avec en moyenne 500 sites web par serveur. Bien sûr, il est hors de question que l'un des 500 sites web puisse faire bugger tout le serveur, et donc aussi les 499 autres sites web qui n'ont rien demandé. Donc, je n'accepte comme applications que du php, du perl, du python, du java servlet, ou du javascript node.js. Mais pourquoi pas également accepter les codes-sources C/C++ à condition que je les compile moi même, avec un compilateur spécial. Compilateur qui n'accepte que les codes C/C++ "safe". Ce type de compilateur produit du code "safe" : partout où c'est nécessaire il ajoute les vérifications de pointeurs et de dépassement de tableau. Bien sûr, on ne peut pas "linker" avec n'importe quelle librairie, uniquement LA librairie wrapper vers les quelques fonctions systèmes autorisées. Le problème c'est : ce langage, C/C++ "safe", il doit être proche au maximum du C/C++ pour que ça ne soit pas difficile de convertir un CGI lambda écrit en C/C++ en une version safe que le compilateur de l'hébergeur web acceptera. ça m'intéresserait beaucoup marc.samuro, si tu es toujours là, d'avoir ton avis sur ce langage le plus proche du C/C++ possible, et sur le compilateur correspondant. |
|
|
00
|
|
|
#73 | |
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 495 ![]() |
Citation:
Si tu as tes serveurs sur des os multiutilisateurs/multitâches (typiquement les Unixlike) et que tu as un serveur web adapté à ces os (style Apache) alors tu n'auras aucun souci. Chaque cgi/bin sera exécuté dans un processus totalement indépendant et si un cgi/bin plante, il ne plantera que ce processus. Ainsi non seulement les 499 autres sites web seront protégés mais même le site qui aura lancé le cgi/bin foireux restera lui-aussi actif (du moins pour les pages qui n'utilisent pas ledit cgi/bin)...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
00
|
|
|
#74 |
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 582 ![]() |
Je suis époustouflé quand même du travail accompli.
Je ne reviendrais pas sur ce qui a été dit pour ou contre, même s'il reste beaucoup de travail à faire en optimisation du compilo d'aprés ce que j'ai pu lire tout au long du topic, mais rappelons que Marc Samuro a précisé d'avance que son compilo n'était certainement pas des meilleurs, que l'on pouvait mieux faire et qu'il l'avait fait pour rendre concret son étude (syntaxe etc) de Safe-C. 18:58 h... annonce de l'écriture d'un tuto pour programmeur expérimenté. 0:43 h... Postage du lien vers le tuto. ça c'est de la motivation^^ Je rajouterais que Marc Samuro il ne faudrait pas que les oppositions à ton idée t'empêchent de continuer ton projet, car même si ton projet aboutit et se distribue, cela n'empêchera pas tes opposants de dormir, par contre ceux qui auront choisi ton Safe-C en toute connaissance de cause, soit ils lui donneront une place dans le monde des langages de programmation, soit ils reviendront à un autre langage plus courant après avoir été éventuellement déçus, continue, optimise, c'est une démarche qui te plaît en plus, et l'avenir dira ce qu'il en est PS : Edit fait pour corrections. |
|
|
30
|
|
|
#75 | |
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 495 ![]() |
Citation:
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
00
|
|
|
#76 | |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
Citation:
|
|
|
|
00
|
|
|
#77 |
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 582 ![]() |
Effectivement Jabbounet
Personne n'a jamais dit le contraire |
|
|
11
|
Copyright © 2000-2013 - www.developpez.com