|
Publicité ' | ||||||||||||||||||||||||
|
|
#121 | ||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 509 ![]() |
Citation:
Citation:
|
||
|
00
|
|
|
#122 | |||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Les instructions en C c'est quoi ? Affecter une valeur à une variable, passer à l'instruction suivante, faire une boucle, une fois de temps à autre faire un appel de fonction, utiliser directement les adresses des éléments et faire des appels système pour gérer manuellement la mémoire. Bref, c'est de l'assembleur avec une syntaxe de "haut niveau" (c'est à dire indépendant de la machine et où tu ne fais pas de distinction entre une valeure déjà dans un registre et celle dans un emplacement mémoire), et un très vague système de type. Du Haskell c'est quoi ? Des fonctions de premier type (c'est à dire utilisable comme des valeurs "normales"), des évaluations retardés, des monades, un système de type complexe et j'en passe. Il est quand même assez évident que compiler du C est beaucoup plus simple que de compiler n'importe quel langage fonctionnel ou même simplement objet. Donc effectivement, dès qu'une nouvelle architecture arrive, un compilo C est livré avec, parce que c'est simple ! Alors qu'il faut attendre bien plus longtemps pour avoir d'autres langages (sauf ceux dont la machine virtuelle est écrite en C...) Encore une fois, le C a été inventé dans les année 70, pour écrire un système d'exploitation. C'est donc un langage qui a 40 ans, et qui était spécifiquement fait pour du bas niveau. Donc qu'on l'utilise pour faire du bas niveau (ie. un OS), pas de problème ! Qu'on l'utilise pour le reste, je trouve ça plus que dommage. Citation:
Citation:
Dernière modification par gorgonite ; 03/12/2007 à 20h14. |
|||
00
|
|
|
#123 | ||||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 979 ![]() |
Citation:
J'ai déjà fait un compilateur C et un compilateur CoreML, et la complexité est quand même du côté du C... et ce n'est pas le mécanisme d'évaluation paresseuse qui augmentera tellement la complexité pour ce qui est des autres fonctionnalités, si tu étudies un papier de Xavier Leroy, tu verras qu'il y a des méthodes simples pour passer d'un langage avec opérations "complexes", à un langage bien plus simple de manière automatique Citation:
Citation:
![]() Citation:
perso, je te conseillerais d'essayer d'en faire en vrai avant t'exprimer si catégoriquement sur le sujet |
||||
|
|
00
|
|
|
#124 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
Citation:
Citation:
Citation:
Son lien avec Unix est vraissemblablement un facteur plus important que sa simplicité d'implémentation. Le fait que ce soit un langage de bas niveau a eu aussi (et a toujours) un effet macho indéniable. Puis au moment où il s'est imposé (disons les années 80), quels étaient les concurrents sérieux? Après, il a profité pas mal de sa base installée.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||||
|
|
00
|
|
|
#125 | |||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
Citation:
J'ai quelques bases de compilation, je te rassure... |
|||
00
|
|
|
#126 | ||||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 979 ![]() |
Citation:
turbo pascal était selon moi un concurrent tout à fait acceptable... Citation:
tu ne parles plus des difficultés liés aux langages, mais plutôt de la verbosité des spécifications... mais il faut aussi garder à l'esprit la considérable différence qu'il y a entre une description académique (et souvent surtout conceptuelle), avec une description détaillée dans le cadre d'une normalisation, ce que nombre d'universitaires regardent avec dédain et qui explique souvent le manque d'intérêt de l'industrie pour leurs travaux (s'il faut être bac +7 pour comprendre comment utiliser le langage )Citation:
pas tellement... dans le cas d'un langage à la ML avec évaluation paresseuse, c'est pas si compliqué si l'on a bien analysé le problème, et qu'on a une structure de code adaptée Citation:
tout à fait d'accord, mais une fois passé sous forme SSA, avec quelques algos classiques et des heuristiques connues, on peut produire du bon code (je l'avais fait en asm mips) je me doute bien que tu as des bases, mais la question que je me demandais était de savoir la complexité de ton plus gros projet de compilation EDIT : en revanche, on s'éloigne du sujet initial... ce serait bien de recadrer le débat, donc concluez vite vos appartés |
||||
|
|
00
|
|
|
#127 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Le gros problème de Pascal, c'est qu'il n'y avait pas deux implémentations compatibles parce qu'il fallait nécessairement des extensions au langage décrit par Wirth pour être utilisable en pratique (en particulier pour la compilation séparée) et que tout le monde a fait les siennes. La norme est venue bien trop tard pour régler ça.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
00
|
|
|
#128 | ||||||
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
Sur l'idée globale en ce qui concerne le C : c'est très très proche de la machine. Citation:
Parce que soit, tout ce que tu énumères est aussi une des difficultés, mais je t'assure que ce n'est pas là où mes étudiants ont le plus de mal. As-tu souvent enseigné le C à des étudiants qui n'ont jamais fait d'informatique ? Citation:
Citation:
Deux références intéressantes : Le grand dictionnaire terminologique de l'OQLF. C'est certes québecois, mais il se trouve que nous avons l'énorme avantage de graviter au centre d'un monde qui manipule les deux langues. Les traductions doivent donc être prompt et juste, et je dois dire que l'OQLF fait un bon travail de ce côté là. Les termes sont généralement utilisés par les scientifiques des domaines concernés. Citation:
Citation:
J'espère avoir été clair |
||||||
|
|
00
|
|
|
#129 |
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Je viens de relire la question du premier post... juste pour être sur...
La question était de savoir quel langage pour commencer entre C et C++... je réitère donc : le C. Le C++ est un calvaire en général (entre autre chose) du fait de son caractère hybride. |
|
|
00
|
|
|
#130 | ||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
Citation:
la conception de systemes numeriques. Et je passe une partie de mon temps a corriger des fausses conceptions au sujet du C, ce qui fait que je connais bien ce qui pose probleme apres les cours -- et donc vraissemblablement pendant parce qu'une bonne partie de ca aurait du etre connue apres des cours corrects. A noter que je preferais enseigner l'assembleur ou la conception de systemes numeriques au C, sans hesitation. Citation:
conteste la qualification d'assembleur, parce qu'il manque des choses au C. Et naturellement je differe sur l'importance accordee a differents facteurs dans sa popularite. Citation:
c'est le signe soit d'un troll, soit d'une meconnaissance profonde du C++. Citation:
comparer des langages aussi fondamentalement different dans l'approche en excluant l'interet meme de l'approche. Pascal est un langage mort. Il en reste Delphi qui est bien trop lie a une plateforme pour etre seulement un candidat pour ce que je fais. Si seulement tu avais ecrit Ada... Si j'ai a choisir entre le C et le C++ pour enseigner la programmation, c'est le C++ que je choisi sans hesitation parce qu'il permet une meilleure separation entre niveaux d'abstraction. Citation:
l'usage autour de moi.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||||||
|
|
00
|
|
|
#131 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 979 ![]() |
Citation:
pour infos, dans mon ancienne école, ils ont (depuis 2 ans) décidé de prendre un sous-ensemble du C++ pour enseigner leur premier cours de programmation, au lieu du C autrefois utilisé en gros, les élèves font du C, mais avec la droit d'utiliser les conteneurs stl, les itérateurs, etc ; il paraîtrait que ça les largue moins vite |
|
|
|
00
|
|
|
#132 | |
|
Expert Confirmé Sénior
![]() Thierry ChappuisEnseignant Chercheur Inscription : mai 2005 Messages : 3 481 ![]() |
Citation:
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
|
|
|
#133 | |
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 453 ![]() |
Citation:
|
|
|
|
00
|
|
|
#134 |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 979 ![]() |
le hic, c'est qu'en 2A, il y a un cours de prog system sous unix (en C bien sur), et qu'ils sont tous la ramasse avec les malloc et les pointeurs (alors que new n'est pas si différent), et ne savent pas construire leurs conteneurs (même une liste est devenue un exploit !!!) |
|
|
00
|
|
|
#135 | |||
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
Mais historiquement c'est vrai -_- Menfinbon si tu préfères me considérer comme un troll libre à toi. Citation:
Mais bon Le fait que Pascal soit un langage qui n'est plus utilisé ou que Scheme soit un langage à typage dynamique n'enlève rien dans son enseignment comme premier langage de programmation. Je pense que tu n'as pas la même vision d'un premier cours que moi. Car si ça peut faire plaisir à des étudiants de voir un langage utilisé en industrie, d'un point de vue pédagogique ça n'a aucun intérêt. Citation:
En même temps, j'enseigne les bases de programmation avec Scheme en cours d'été en accéléré, et les questions des étudiants ne portent plus sur le côté technique, mais bien sur un niveau d'abstraction supérieur. Sais-tu que la philosophie d'enseignement du MIT est d'enseigner seulement le Scheme pour apprendre les concepts, puis laissez les étudiants apprendre les autres langages comme des grands. Le Scheme a été choisi en première année parce que sa syntaxe est extrêmement simple et qu'il permet de montrer les concepts rapidement sans perdre du temps dans des détails du langage qui ne servent à rien. Maintenant j'ai surtout l'impression que tu ne me donnes aucun crédit et me prends pour un idiot. C'est très présomptueux de ta part. Je vais donc laisser ce « dialogue » avec toi ici si tu le veux bien. Joyeux Noël mon cher !!
|
|||
|
|
00
|
|
|
#136 | |
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
N'oublis pas cependant qu'il est beaucoup plus facile de dire ce qui ne va pas dans un cours que de réussir à en monter un qui fonctionne dans le cadre d'un programme universitaire complet. Car mes collègues en France, en Allemagne en Angleterre ou ailleurs dans le Canada ne l'ont toujours pas trouvé je pense. En tout cas, ils ne me l'ont pas fait savoir dans ce cas ^_^ |
|
|
|
00
|
|
|
#137 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Tu prends une position excessive et tu t'offusques quand on en prend une
similaire? Ca m'arrive aussi d'écrire des choses pour faire réagir Citation:
restais dans le cadre d'enseignement, je la comprends mieux. Quant à ma vision sur ce qu'il faut dans un cursus d'enseignement de la programmation, elle est beaucoup plus nuancee que tu n'as l'air de le penser -- cette discussion est essentiellement entre le C ou C++ pour cet objectif. Voir par exemple http://www.developpez.net/forums/sho...d.php?t=154919 ou http://www.developpez.net/forums/showthread.php?t=82573 mais je suis sur de pouvoir trouver des exemples ailleurs. Citation:
au complet -- je ne le tenterais ni avec Ada, ni avec C++ -- mais d'utiliser un sous-ensemble pour apprendre la programmation. Et dans ce cadre, ça ne me semble pas compliqué de trouver un sous-ensemble de C++ plus facile à enseigner dans un ordre logique qu'utiliser le C. Citation:
Citation:
idiots.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||||
|
|
00
|
|
|
#138 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
|
00
|
|
|
#139 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 979 ![]() |
Citation:
en fait ce second cours n'a pas été réformé... et donc considérait que les bases du C était acquises. d'ailleurs, il semblerait qu'ils aient réformé le cours de 2A pour être plus homogène |
|
|
|
00
|
|
|
#140 | ||
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
Bonne fête quand même (on a pas de smiley du père noël et ça c'est un manque messieurs les responsables.) Citation:
En dehors de cette perspective, et pour des gens qui sont déjà de bon programmeur, le C++ est un langage qui offre une souplesse rarement atteinte. Mais cette souplesse est rarement un avantage lorsqu'on parle à des débutants. De fait, il faut se fixer une limite (problème de temps) surtout que normalement, premier cours de programmation équivaut à premier cours de génie logiciel (analyse de problème et conception). Il n'y a jamais le temps nécessaire pour voir complètement ce qu'offre un langage dans un cours. Ceci d'ailleurs est logique... sinon le langage est bien peu riche. Souvent ce qui se passe, c'est que le programme s'établit en prenant un sous-ensemble du langage qui vise certains paradigmes. On commence souvent avec du procédurale qui est plus « naturel » puisque hérité d'une pensée mathématique très pratiquée par les étudiantEs (enfin espérons :mg Faire du C++ en le limitant aux procédures, c'est pas très beau et certains objets apparaissent quand même. C'est génant pédagogiquement d'expliquer l'écriture « f.getline() » ou « s.c_str() ». On sent que les étudiants les plus borderline (pardon pour l'anglicisme) se sentent mal à l'aise et ne comprennent pas ce qu'on fait. On peut leur dire « laisser faire, on vous expliquera plus tard » mais c'est pas très pédagogique non plus. Donc tant qu'à faire du C++ amoindri à la procédure avec des dérives vers l'objet quand il le faut, il vaut mieux faire du vrai bon C et s'en tenir à ça. Au cours suivant de fournir les outils (analyse/conception et implémentation) du paradigme OO. Si on fait correctement du C (avec des types enregistrements bien faits, des pointeurs etc.) il n'y a pas de problème majeur pour apprendre le C++ selon moi. Hélas, ici même nous ne faisons pas ça pour des problèmes de stage dès la première année. Quand on sait qu'en plus nous imposons des contraintes à la Pascal pour garder une certaine discipline sur le code, on se demande pourquoi du C++. En tout cas, les étudiants se le demandent par la suite d'après leur feedback. Ce genre de réflexion sur la souplesse de C++, m'impose le même raisonnement avec Python qui est langage formidable pour qui sait déjà structurer sa pensée et travailler correctement. J'ai pointé plusieurs fois une des souplesses du langage qui est un calvaire pour des débutants en programmation. Bien sûr si on se place directement dans un contexte industriel, le problème est franchement différent. Le C++ n'a que peu de concurrent en fait. Peut être Java pour son utilisation soutenue, ou Ada (dans les domaines dans lesquelles je travaille particulièrement). Mais le couteau suisse du C++ est un atout formidable. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com