it-swarm-fr.com

Pensez-vous que l'exposition à la base peut mutiler votre esprit?

Il est pratiquement impossible d'enseigner une bonne programmation pour les étudiants qui ont eu une exposition préalable à la base: en tant que programmeurs potentiels, ils sont mutilés mentalement au-delà de l'espoir de régénération

- Edsger W. Dijkstra

J'ai profondément respect à Dijkstra, mais je ne suis pas d'accord avec tout ce qu'il a dit/écrit. Je ne suis pas d'accord spécialement avec cette citation sur papier lié a écrit il y a 35 ans sur la mise en œuvre Dartmouth Basic Mise en œuvre.

Beaucoup de mes collègues ou des programmes d'amis ont commencé avec de base, des questions ci-dessous ont des réponses indiquant que de nombreux programmeurs avaient leur première expérience sur la programmation à base de base. Afaik beaucoup Bon Les programmeurs ont commencé à la programmation de base.

Je ne parle pas de mentions de base visuelles ou d'autres dialectes "modernes" de la fonction de base sur des machines pleines de ressources. Je parle de vieux temps de base en cours d'exécution sur un ordinateur "jouet", que le programmeur a dû s'inquiéter de la sauvegarde de petits nombres qui n'ont pas besoin de calculer une chaîne pour sauver un octet masty, car l'ordinateur n'avait que quelques centaines d'entre eux ou Avoir à utiliser un goto calculé faute d'une caractéristique plus puissante et de nombreuses autres choses qui nécessitent le programmeur de penser beaucoup avant de faire quelque chose et de forcer le programmateur à être créatif.

Si vous aviez de l'expérience avec l'ancien temps de base sur une machine avec des ressources limitées (à l'esprit qu'un micro-contrôleur simple a aujourd'hui beaucoup plus de ressources qu'un ordinateur en 1975, pensez-vous que fondamental aidez votre esprit à trouver de meilleures solutions, à penser Comme un ingénieur ou une base vous conduit au côté obscur de la programmation et de vous mutiler mentalement?

C'est bon d'apprendre une langue de programmation fonctionnant sur un ordinateur rempli de ressources où le programmeur novice peut faire tout faux et le programme fonctionne sans gros problèmes? Ou vaut-il mieux apprendre où le programmeur ne peut pas se tromper?

Que pouvez-vous dire à propos de la base vous a aidé à être un programmeur meilleur/pire?

Souhaitez-vous enseigner l'ancien fonctionnement de base sur une machine de 2 Ko (virtuelle) à un programmeur à venir?

Bien sûr, seule l'exposition à la base est mauvaise. Peut-être que vous partagez mon avis que la base moderne ne vous aide pas trop car la base moderne, la longue autre langue de programmation, donne des installations permettant au programmeur ne pense pas plus loin.

Informations supplémentaires: pourquoi de base?

33
Maniero

Un homme ne peut rien faire mieux que de manger et de boire et de trouver une satisfaction dans son travail.

J'ai appris de base avant autre chose (Eh bien, à l'exception de l'algèbre, je suppose). Si cela n'a pas sérieusement déformé mon esprit, je ne sais pas comment expliquer les 18 ans qui ont suivi ...

Cela dit, alors quoi? Dijkstra aurait peut-être pu m'apprendre quelque chose à cause de mon exposition à long terme au fondement, mais il aurait un plus difficile Temps m'approuvoir n'importe quoi en raison de son exposition à long terme à une boîte de pins souterraine. Et même avec ces facteurs supprimés, je n'ai toujours jamais été un étudiant de CS sérieux, un étudiant de mathématiques sérieux ou un étudiant sérieux dans une autre discipline. L'abîme entre quelqu'un comme moi et le type de programmeur Dijkstra aurait aimé voir est si grande quant à être presque insondable ...

Et pourtant, nous programmons. Nous qui a fondu sur fondement, joué avec Fortran, expérimenté avec Cobol et tout le reste, nous avons également trouvé une joie et une fascination avec ces petites machines qui, tout en peut-être entièrement dissemblable de ce qui a d'abord dessiné M. M. Edsger dans son domaine, n'est pas moins un appel, la base d'un travail d'amour de longue date.

... Ou peut-être que c'est juste ce qu'est un esprit mutilé serait dire ...

31
Shog9

Ce n'est pas basique qui vous fait mal, c'est l'absence de vous exposer à Autres Langues. Les "programmeurs" de monoglot ne sont pas.

17
Craig Stuntz

Basic, d'un point de vue structuré, n'était pas pire que l'assembleur ou le cobol. À l'époque, il n'y avait pas la pléthore des langues descendantes de l'algole que nous avons maintenant, Pascal étant la première introduction La plupart des gens ont à des structures de contrôle raisonnables (et je ne suis pas tout ce qui aime les structures de contrôle Pascal).

Si la base était suffisante pour nuire définitivement aux personnes, les autres langues précoces étaient également, et nous n'aurions donc pas eu des personnes suffisamment pratiques pour développer toutes les langues que nous utilisons aujourd'hui.

Il est possible que Dijkstra s'occupait alors de personnes qui n'étaient pas de bons programmeurs et qui ne seraient jamais, qui ont appris à faire certaines choses en matière de base. C'est l'interprétation la plus caritative que je puisse mettre sur la déclaration.

11
David Thornley

J'ai appris avec de base sur un TRS-80 et Apple II C/E et me considère comme un bon programmeur. Les deux traits que je pensais personnellement ont conduit à ne pas être détruit par l'apprentissage de base

  1. J'essayais d'essayer d'apprendre de meilleures façons d'accomplir ce que je voulais avec moins d'effort, ce qui a conduit à apprendre d'autres langues et les caractéristiques de ces langues qui les rendent puissants et
  2. J'ai rencontré et reconnu des problèmes de base en tant que langue, surtout particulièrement le manque de sous-programmes (bien que je n'ai pas eu l'expérience de décrire de manière concise les problèmes que je fais maintenant).

Je vais admettre que l'apprentissage de la programmation orientée objet après que la procédure pure de base était une lutte pendant un certain temps, mais je ne sais pas si cela était vraiment lié à la base, comme j'avais appris une juste quantité de C d'ici là aussi. .

6

Je ne suis pas d'accord avec Dijkstra aussi. Je suis plus difficile d'apprendre une seconde langue parce que les paradigmes, pas parce que c'est basique.

La base a été ma première langue sur un ordinateur personnel appelé TK (Sinclair comme) en 1985. C'était une machine de ressources très limitée. À cette époque, j'ai écrit un compilateur de base à partir d'un livre à l'aide d'un éditeur hexa-décimal pour le plaisir. J'ai acheté un livre Z80 et j'ai appris la langue de la machine 8bit après cela. La base m'a beaucoup aidé avec ça.

Après avoir appris C et Pascal et jouer avec l'assemblée pour 8080/6. MSX-Basic, rapide Basic dans MS-DOS TIMES ... VB, Delphi, Certains Java dans Windows Times ...

Aujourd'hui, un travail avec des progrès (4GL), .NET (C #/VB), PHP et je ne me sens pas comme un cyclope. : O)

6
Pagotti

J'ai commencé avec de base sur un Apple Clone quand j'avais huit heures.

Même les versions ultérieures de la base qui en avaient un OOP Idées roulées dans (Qbasic, Visual Basic, etc.) n'auraient pas eu de sens à huit ans.

Démarrage de la programmation que tôt est l'une des raisons pour lesquelles je peux penser à travers le problème du flux de programme et c'est quelque chose de fait trop de personnes ne peuvent pas bien faire dans cette industrie.

Je pense qu'un début précoce est souvent bénéfique et une langue très simple est requise lorsqu'elle s'agite de petits.

Votre kilométrage peut varier...

5
Bill

Toute personne va avoir un problème si elles ne peuvent pas identifier les problèmes de leur langue actuelle et non seulement être capables de les contourner, mais trouvez-en un autre construit pour résoudre le problème.

Et goto n'est que mal si vous n'avez pas la numérotation de ligne;)

4
JeffO

Je pense que l'exposition au plus fondamental exemples au monde est ce qui mutilent les cerveaux des programmeurs, pas la langue elle-même. C'est comme le programmeur C # qui navigue sur MSDN et ne pense pas que la manutention des exceptions est nécessaire ou que les types IDisposable ne font pas vraiment besoin d'être disposés.

4
Jesse C. Slicer

Basic's GOTO est un excellent moyen d'enseigner la manière de penser en langage de montage. Cela ne mutilent pas l'esprit, il ne fait que ressortir son esprit plus loin des synapses à base de carbone et plus près des transistors à base de silicium.

Cependant, comparons de base au logo. La base peut transformer les jeunes enfants à l'écart de la programmation, car pour écrire un programme amusant simple, tout ce que vous pouvez faire est de garder une copie-taper un programme très long imprimé sur un magazine, alors que le logo qu'un one-liner peut dessiner des graphismes très impressionnants, qui est essentiel pour attirer les enfants.

3
rwong

Certains des meilleurs programmeurs que je connais ont été exposés tôt à la programmation de base. C'est un peu plus "concret" et offre ainsi une meilleure idée de la manière dont la machine de faible niveau pourrait réellement fonctionner que de nombreuses langues plus récentes (par exemple, c'est une introduction plus proche de HLL à l'assembleur).

La citation de Dijkstra est à partir de la période où les universitaires tentaient de pousser une tendance à des programmes bien structurés de manière proprablement conçus à partir de spécifications. Mais ce n'est pas la façon dont l'industrie de grande partie est allé. Au lieu de cela, de nombreux programmeurs d'ère Web 2.0 tentent de prototyper rapidement quelque chose pour lequel la plupart des spécifications mathématiquement serrées pour prouver que le code contre n'existent pas, car les choses évoluent trop rapidement pour que cette spécification soit compétitive.

Ainsi, les méthodes de programmation d'essais et d'erreurs de hack-and-slash que la programmation de base encourage parfois, lorsqu'elle est nettoyée un peu en méthodologie, est un apprêt utile à RAD pensant.

Je prendrai fin en notant qu'il y a au moins 5 interprètes de base disponibles qui fonctionnent sur l'iPad, gardant ainsi la langue disponible même sur les nouveaux appareils.

2
hotpaw2

J'ai commencé à programmer avec GW Basic au début des années 90. Mon esprit n'a pas été mutilé. Je suis passé à de meilleures langues comme Pascal, C, C++, Java, C # et Python.

Je ne serais pas en mesure d'écrire un programme de base aujourd'hui; J'ai oublié comment penser en termes de numéros de ligne. Pas que c'est un problème.

Mais mon expérience de base m'a beaucoup aidé dans le cours d'architecture informatique de mon collège où je devais apprendre la langue de montage (MIPS). Le flux de contrôle de la langue d'assemblage est beaucoup comme celui de base: saute = GOTO, branches = IF...GOTO, jal (appel) ...jr (ret) = GOSUB...RETURN. C'est tout le flux de contrôle dont vous avez besoin!

C'est bon d'apprendre une langue de programmation fonctionnant sur un ordinateur rempli de ressources où le programmeur novice peut faire tout faux et le programme fonctionne sans gros problèmes? Ou vaut-il mieux apprendre où le programmeur ne peut pas se tromper?

Je dirais qu'il est préférable d'apprendre sur un ordinateur avec des ressources limitées. Pas parce que "le programmeur ne peut pas se tromper" mais parce que le seuil de "fraîcheur" est beaucoup plus bas. Un programmeur de débutant pourrait ne pas savoir comment faire un grand tireur pour la première personne pour son PC. Mais ils pourraient écrire un grand jeu de pac pour leur TI-89 et utiliser le matériel à son plein potentiel. Et c'est un sentiment de pouvoir.

1
dan04