IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le code de la « sinclair scientific » étudié à l'aide du reverse engineering
Révèle les secrets qui lui ont permis de faire du calcul scientifique

Le , par Cedric Chevalier

11PARTAGES

15  1 

En 1974, Clive Sinclair est un jeune homme ambitieux qui voulait commercialiser une calculatrice scientifique bon marché dans un segment déjà dominé par les grands noms comme HP.

Le hic c’est que, réaliser la calculatrice de Sinclair au prix auquel il souhaitait la commercialiser, s’avère une tâche impossible. D’ailleurs, son partenariat avec Bowmar (un constructeur de l’époque) a débouché dans un cul-de-sac.

Sinclair s’est retourné vers Texas Instruments qui lui a fourni une puce qu’on jugerait à première vue rudimentaire face à celles du produit de HP. Elle supportait un nombre d’opérations réduit (addition, multiplication soustraction et division), ne comportait que trois registres, et avait une ROM dont la capacité était la moitié du HP-35 qui dominait le marché.

A titre de comparaison, le HP-35 a requis 2 ans de travail d’une vingtaine d’ingénieurs hautement qualifiés et le NEC plus ultra de la technologie de l’époque. Face à un challenger aussi puissant que le HP-35, le produit de Sinclair fait office d’outsider. Les ingénieurs de Texas Instruments, pour dissuader Sinclair de sa folie, diront « C’est tout simplement impossible », pour souligner le fait que leur puce était incapable de faire du calcul scientifique.

Impossible ? Pas tout à fait, puisque Sinclair revint trouver les ingénieurs de Texas avec une calculatrice capable d’effectuer le calcul des fonctions sinus, cosinus, tangente, logarithme, Arctan, ArcSin, ArcCos ainsi que le calcul avec exposants.

On ne peut qu’imaginer la consternation des ingénieurs. Ce qu’avait omis de dire Sinclair, c’est qu’il était assisté par un génie de la programmation, le PHD Nigel Searle, qui a réalisé un travail d’orfèvre malgré les limitations techniques de la calculatrice.

Grâce à la technique du « reverse engineering », Ken Shirriff a pu fournir les détails sur le code que la calculatrice exécutait. On peut se rendre compte que Nigel a eu recours à de petites astuces simples mais efficaces pour doter le périphérique des fonctions du calcul scientifique. Il a utilisé le Reverse Polish Notation (qui permet d’écrire l’opérateur après les opérandes d’un calcul exemple 3+2 devient 3 2 +) pour représenter un nombre signé, le 0 est le signe positif alors que 5 représente le signe négatif, la division est implémentée comme une série de soustractions et bien d’autres.

Pour le rapport qualité prix, la calculatrice de Sinclair vaut son pesant d'or. En effet, elle coûtait 100 dollars l’unité contre 365 dollars pour la HP-35. Toutefois, elle pêchait côté performances. Par exemple l’opération sinus(1) prenait 7,5 secondes.

Source : blog Ken Shirriff

Et vous ?

Qu'en pensez vous ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de e-ric
Membre expert https://www.developpez.com
Le 04/09/2013 à 12:32
Tout à fait d'accord avec sevyc64, ça optimise surtout le commerce...
Pour le fun :Loi de Wirth

Les outils bureautiques, à ce titre, m'amusent beaucoup, avoir besoin d'un Core i7 pour écrire un simple texte mis en forme prête à rire. On faisait la même chose avec un 386 à une époque, avec peut-être moins de confort.
Personnellement, je cherche le plus souvent à optimiser mon code ou tout du moins à ne pas avoir un code trop débile.
Ce n'est pas parce qu'on dispose dans une seule machine de la puissance d'un centre de calcul d'il y a 20 ans qu'il faut coder comme un pied.

Il faut aussi ne pas oublier que les compilos prennent en charge l'optimisation qu'il est souvent difficile de dépasser voire contreproductif. L'optimisation doit porter sur l'algorithme non pas sur la réalisation de celui-ci. Celà n'apporte peu d'optimiser par le code seulement un algo foireux. D'un autre côté, un bon algorithme sera valorisé par une implémentation soigneuse.

Cdlt

@+
13  0 
Avatar de sevyc64
Modérateur https://www.developpez.com
Le 04/09/2013 à 12:05
Et oui, c'est qu'à l'époque on savait réfléchir et faire les choses.
On avait pas de puissance de calcul, on avait pas de mémoire, mais on arrivait à tirer la quintessence du matériel dont on disposait.
Je me rappelle le temps ou on optimisait un code à l’instruction asm près.

Aujourd'hui, on trouve un logiciel un peu lent ? on monte en gamme sur le CPU, on rajoute un GPU surpuissant (sachant que l'on a évidement aucun logiciel capable de l'exploiter pleinement), et puis au passage on rajoute aussi quelques Go de ram (quid des portables à 16Go de Ram, juste pour aller sur internet et regarder quelques films HD ?)

Et coté développement, ben comme on a de la puissance et de la mémoire, on se pose pas la question si on code bien ou avec les pieds. On ne sait plus ce qu'est l'optimisation,on la considère même comme une perte de temps.

La norme aujourd'hui est le i5 ou i7 avec de 12 à 16Go de ram. JE suis absolument certain que la plupart des logiciels correctement développés et fortement optimisés comme l'a pu l'être le code de la sinclair tourneraient sur des P4 avec 2Go de ram que l'on possédait il y a plus de 10 ans.
12  0 
Avatar de sevyc64
Modérateur https://www.developpez.com
Le 04/09/2013 à 13:13
Citation Envoyé par e-ric Voir le message
Les outils bureautiques, à ce titre, m'amusent beaucoup, avoir besoin d'un Core i7 pour écrire un simple texte mis en forme prête à rire. On faisait la même chose avec un 386 à une époque, avec peut-être moins de confort.
Oui, enfin, quand on voit la gestion des styles et titre, modèles de document, (entre-autre) sous Word 2007 et suivant par rapport à ce qu'elle était sous Word 97, c'est à dire hyper simple et facile. Je pense que niveau confort, on y a plus perdu que gagné. Mais bon, ce n'est que mon avis.
6  2 
Avatar de the_babou
Membre du Club https://www.developpez.com
Le 04/09/2013 à 11:37
Je pense que bien peu de (aucun?) programmeurs seraient capable d'une telle prouesse aujourd'hui. Moi le premier !
3  0 
Avatar de Jipété
Expert éminent sénior https://www.developpez.com
Le 04/09/2013 à 22:17
Citation Envoyé par sevyc64 Voir le message
Oui, enfin, quand on voit la gestion des styles et titre, modèles de document, (entre-autre) sous Word 2007 et suivant par rapport à ce qu'elle était sous Word 97, c'est à dire hyper simple et facile. Je pense que niveau confort, on y a plus perdu que gagné. Mais bon, ce n'est que mon avis.
C'est aussi le mien, mais tu t'es fait moinser 3 fois, sans doute par les fans du ruban,

et le taf, alors, ça a donné qqchse ?
3  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 12/09/2013 à 11:58
Citation Envoyé par ymoreau Voir le message
Absolument pas d'accord. Chacun son métier, et pour du développement logiciel on n'a généralement pas besoin de connaitre ce genre d'opérations binaires, le compilateur optimise déjà toute cette couche mieux que la majorité des développeurs même expérimentés.
Bien entendu avoir une vision globale de ce qui se passe en bas niveau aide à mieux appréhender les impacts de la programmation haut niveau. Mais au bout d'un moment il est normal de se concentrer sur le niveau sur lequel on intervient. Pour moi ce qui manque le plus c'est un véritable apprentissage des bonnes pratiques, et un meilleur encadrement des architectures/refactoring, des relectures d'algos/code en équipe etc. J'ai l'impression que les projets se laissent dominer par le code existant alors qu'il faudrait sans cesse le remettre en question ET s'en inspirer à la fois.
à ce rythme là on pourrait aussi abandonner les cours de math à l'école puisqu'on a tous une calculette sous la souris.

dans un autre domaine, je donne des cours de programmation PHP, et bien ma première session de formation ne parle absolument pas de programmation, je parle d'adresse IP, de TCP/IP, réseaux, HTTP, proxy etc...Alors je ne forme pas des techniciens réseaux, ce n'est pas le but, mais je donne sur une journée un aperçu ce qu'il y a sous le capot pour que les développeurs Web arrêtent de rebooter leur machine quand ils reçoivent une erreur 404. je leur demande juste d'avoir une connaissance sommaire de ce qu'il se passe sur un réseau IP avant d'aborder les questions de programmation web. Ils doivent être en mesure d'identifier si le problème qu'ils rencontrent vient de leur connexion réseau, d'un problème d'URL, d'une configuration serveur ou d'un bug dans leur application. Ils doivent pouvoir du premier coup d'oeil distinguer une popup du navigateur d'un "alert" Javascript ou d'une iframe en avant plan.

Si après ça ils veulent développer avec un L4G sans la moindre trace de HTML ou Javascript, ça les regarde, mais au moins ils sauront pourquoi ils ont choisi ce mode de développement.
4  1 
Avatar de Darkzinus
Expert éminent sénior https://www.developpez.com
Le 04/09/2013 à 11:41
Article sympathique ! J'en pense qu'il était sacrément talentueux !
2  0 
Avatar de tlt
Membre averti https://www.developpez.com
Le 04/09/2013 à 12:02
il en connait des choses en matière d"optimisation. chapeau
2  0 
Avatar de kiprok
Membre averti https://www.developpez.com
Le 04/09/2013 à 12:03
Belle perfermance en effet. C'est toujours payant d'avoir un bon developpeur à ses cotés!
2  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 04/09/2013 à 16:34
L'optimisation est un art que peu maitrisent(et moi pas franchement). C'est pour ça que d'aucuns conseillent d'upgrader le matos, et de n'optimiser que si ça ne suffit pas.

Perso, j'essaye toujours de faire une programmation naturellement efficace, MAIS le premier objectif, c'est quand même que ça marche et que ça soit lisible.
2  0