63 votes

Ce qui fait COBOL tel haï de la langue?

Ce qui fait COBOL tel haï de la langue?

Je suis plutôt jeune et donc je n'ai pas connu le temps où COBOL était encore en usage, et même à intégrer, peut-être que vous pouvez m'aider.

Partout où je vais et de surf j'ai:

  • Suis se dit sur la façon horrible COBOL est
  • Voir les sites moquer de COBOL
  • Entendre que je devrais être heureux que je n'ai pas à utiliser COBOL, à partir d'anciens programmeurs
  • Voir les autres faire de l'anti-COBOL-ist blagues

Je ne sais pas beaucoup sur COBOL, sauf qu'il est encore utilisé partout que beaucoup de vieux systèmes n'ai pas refait et qu'il est même encore développé et géré. J'ai aussi regardé quelques exemples de code COBOL, mais il semble comme ils sont rare et cher que le sang de licorne.

  • Si vous fermez cette question ou donnez-moi sarcastique, pertinence des réponses que je vais devoir apprendre le COBOL, à trouver la manière dure. Je suis sérieuse.

54voto

NealB Points 11102

Les raisons de la haine COBOL

Si vous avez besoin d'analyser ou de manipuler du texte (par exemple. HTML) puis COBOL va être vraiment irritant. Soutien pour manipulation de texte est probablement le plus faibles, les plus misérables, une partie de la langue. Les développeurs Web vont tous les déteste COBOL pour cette seule raison (et à juste titre).

Si les cycles de PROCESSEUR et la mémoire ne sont pas des facteurs limitants, alors vous aurez trouvez les langues modernes et les cadres peuvent être beaucoup plus productif.

Votre travail consiste à maintenir une vieille de 30 ans d'application. Vous allez à la haine ce presque par définition. Puisque le seul survivant de plus de 30 ans des applications sont probablement écrit en COBOL, vous haïssez COBOL.

Vous êtes attirés par les "brillants de nouvelles choses". COBOL n'est pas brillant ou en nouvelle - et non pour vous.

Raisons pour comme COBOL

Le cœur de métier de l'organisation pour laquelle vous travaillez n'est pas en développement ou de la prestation de services informatiques connexes/produits (ie. vous habitez sur la passif du bilan des entreprises). Puis COBOL est bon parce qu'il est très stable et probablement le livre le plus bas coût par transaction dans l'industrie.

La charge des transactions que vous avez à traiter est énorme. Non dynamique, non-objet les langages orientés (lire des classiques COBOL) sont mieux équipés pour construire haute performance, faible utilisation de la mémoire les processeurs de transactions. C'est en grande partie en raison d'une assez correspondance directe entre un verbe et le COBOL généré machine à jeu d'instructions nécessaires pour la mettre en œuvre.

Vous souhaitez créer des applications qui seront opérationnels à 30 ans à partir de maintenant. COBOL est une évolution de la langue, mais qui a une tradition de accroché à l'ensemble de ses bagages. C'est un double tranchant épée - évite forcé et/ou de mise à niveau coûteuse (bon), mais peut contribuer à certains affreux code (pas très bon - mais vous ne pouvez pas avoir les deux).

De l'entretien. Ancien code COBOL peut être (presque toujours) laid, mais il peut être déchiffré et maintenu. COBOL est un de lecture/écriture de la langue (par opposition à écrire une seule fois puis de le ré-écrire). Étant donné le lourd accent sur la mise à profit des cadres d'aujourd'hui, je question de savoir si le code résultant sera "lisible" une fois le cadre sous-jacent est abandonnée pour le côté brillant de nouvelles chose. Si vous en question cette déclaration, la liste d' amorti des éléments pour la dernière version Java version. Comparez cela à la liste des obsolète COBOL éléments de langage. La taille relative de ces listes ne parle pas ainsi à long terme la maintenabilité d'une application Java. J'utilise Java uniquement à titre d'exemple - que la même observation s'applique à tout récemment élaboré des langues et des cadres (oui, je sais que Java est "old school" pour beaucoup d'entre vous mais elle est récente par rapport à COBOL).

COBOL n'est pas un Couteau de l'Armée Suisse

COBOL a été conçu à l'origine pour les Entreprises Orientées vers les applications. À l'époque cela signifiait de choses, comme la comptabilité, la gestion des stocks et à d'autres formes de la gestion des dossiers. COBOL est sill largement adaptés à ces applications. Si votre entreprise est fortement pondérée sur le plan de la transformation de l'équation par opposition à la présentation de côté, puis COBOL est un très raisonnables, la langue à utiliser.

Beaucoup de "mauvaise presse" COBOL est des gens qui travaillent dans domaines d'application pour lesquels le COBOL n'est pas adapté et de ceux qui ont jamais essayé de vraiment comprendre la langue (beaucoup d'entre eux sont des universitaires avec un parti pris pour brillant de nouvelles choses).

Et par la manière, COBOL est encore très vivante et en cours d'utilisation. Nous ne faisons tout simplement pas une beaucoup de "bruit" à ce sujet.

38voto

dan04 Points 33306

Un gros problème que les gens ont avec COBOL est la syntaxe. Il a été inventé par des gens avec la (fausse) croyance que les langages de programmation sont plus faciles, plus ils ressemblent à l'anglais. Alors que C-les langages ont un code comme:

tax = rate * subtotal;
count--;

COBOL a

MULTIPLY RATE BY SUBTOTAL GIVING TAX.
ADD -1 TO COUNT.

(Les programmeurs COBOL je sais vraiment écrire "AJOUTER -1" tout le temps: Il est plus court que "SOUSTRAIRE".)

27voto

Mark Points 474

[divulgation - je travaille pour une COBOL fournisseur]

Je pense que beaucoup de la question que vous décrivez (il y a un beaucoup d'anti-COBOL contenu sur le web) est vraiment à quelques choses

  1. Il y a un général de sentiment négatif à l'ordinateur-geekosphere à propos de quoi que ce soit "vieux". Pour ces personnes, le dernier langage de script est l'endroit à être, et tous ceux qui font autre chose est hors de contact (vous trouverez probablement un bon nombre de Rubis ou Groovy programmeurs dire que Java est trop vieux jeu, COBOL n'est pas la seule langue qui est mauvaise PR). Je dirais que les gens qui sont les plus actifs dans la blogo- & twitter-sphère appartiennent à ce groupe. Tandis que les gens faire de l'argent bon de COBOL ou ceux qui sont activement déplaçant vers l'avant sont beaucoup moins bruyants, ils ont une bonne vie pour faire!

  2. Affiches de faire des commentaires négatifs ne sont pas à jour avec ce modernes COBOL. Vous entendrez beaucoup de commentaires au sujet a) de la façon dont détaillé de la langue, b) la manière dont elle doit être structurée, c) la façon dont il encourage les mauvaises pratiques. Chacun de ces sont fausses: a) je ne pense pas qu'il y a beaucoup de langues qui peuvent être plus concise que COBOL est display "hello world". (oui, c'est le programme complet), b), ce n'est pas vrai pour les 15 ans, c) n'importe quelle langue peut être écrit mal.

  3. COBOL promoteurs et les vendeurs n'ont pas fait un excellent travail de garder le monde informé des modifications qui ont été en cours et comment la dynamique et l'importance des COBOL de la communauté et de l'application de base est. Je l'avais fais moi-même et mon entreprise dans ce groupe, et nous sommes activement en essayant de faire mieux.

20voto

Joe Zitzelberger Points 2393

Suis se dit sur la façon horrible COBOL est

Les gens aiment à bash de l'inconnu. Quelques programmeurs veulent apprendre le Cobol, même si elle est l'une des langues les plus courantes en usage, c'est juste ins pas sexy. Pas comme ça langage "C" qui est presque aussi vieux que le Cobol.

(BTW, le "COBOL" acronyme a été un mot prononçable pour plus d'un demi-siècle (comme la Plongée sous-marine, Radar et Laser), pouvons-nous nous arrêter à capitaliser et il suffit de dire "Cobol"? S'il vous plaît.)

À peu près toute transaction qui implique de l'argent sera traitée par le biais de systèmes Cobol à un certain point. La plupart des "données" que le gouvernement ou des sociétés de maison sur vous et vos comptes seront traitées par le biais de systèmes Cobol.

Voir les sites moquer de COBOL

Les gens aiment à se moquer de ce qu'ils ne comprennent pas. Dans ce fil, j'ai vu certains ouvertement idiot créances sur Cobol par des gens qui visiblement ne savent pas de quoi ils parlent-mais ils vont dire que c'est parce que c'était de cette façon dans le disque de mémoire et de cpu limité 1974, alors qu'elle doit toujours être de cette façon, non?

Permet de prendre certains des malentendus les plus courants:

  • Cobol est "Bavard" ou "Commentaires": Seulement si vous faites en sorte. Cobol, laisse beaucoup d'espaces de paroles qui ne signifient rien, mais peut-être pour "lisibilité". Dans la pratique, personne ne les utilise, donc pendant que certains s'sera ridicule exemples de verbosité, dans la pratique, vous verrez tout le bruit de la merde supprimé et simple, compréhensible, laconique consolidés.

  • Cobol est "Vieux", toutes les applications ont été écrites il y a 30 ans et le code source est perdu, et les programmeurs sont en train de mourir: C'est juste de la connerie d'Accenture en fait pour vendre des y2k contractante heures. À toutes fins pratiques, Cobol est la langue des transactions financières. La transaction peut être accepté par un javascript de la page web, java, point de vente, C++ de la caisse, mais il sera traité, présenté et compensés par des systèmes Cobol. Ils sont en cours de développement et il y a beaucoup de programmeurs à travers le monde de l'écriture de nouvelles applications chaque jour. Mais ils ne sont pas sexy -- le choix entre l'équilibrage de la les mondes collective chéquier et de l'écriture de code OpenGL pour les plus chaudes de la nouvelle-massivement-multijoueurs-dougeon, ce qui est la moyenne des 20-quelque chose de geek va choisir?

  • En Cobol, tout est Global: Seulement si vous êtes coincé dans un time-warp à 1966. Cobol a toujours soutenu l'idée de modules -- séparée de la compilation des unités de stockage isolé. Il a également un service de déclarer des éléments de stockage explicitement globalement accessibles à toutes les unités de compilation, mais seulement comme une option (BTW, C aussi a cette option). En Cobol 85 le concept de "imbriqués les programmes" a été ajoutée -- c'est identique à une fonction ou une procédure en C ou en pascal -- un cadre de pile d'invocation avec son propre local de stockage et un ensemble de paramètres qui lui sont passés.

  • En Cobol, vous utilisez des cartes perforées et vert-bar imprimer: de toute Évidence quelqu'un qui n'a pas utilisé Cobol depuis les années 1970, à l'époque, vous avez fait la même pour Pascal, C, LISP, macroized C-À-Classes (plus tard appelé C++), et al.

  • Cobol aime le GOTO verbe: Donc, est-ce que C, VB, beaucoup de langues permettent à cet abus d'exister. Juste parce qu'il a été largement utilisé dans les années 70 alors que c'était la seule structure de contrôle disponibles, ne signifie pas qu'il est largement utilisé dans les préados(?). Cobol 85 introduit un riche ensemble de structures de contrôle qui ont fait le SAUT (et son jumeau maléfique de l'Altération de GOTO) obsolète.

  • Un mal placés période peut ruiner votre vie: Pas pour le dernier quart de siècle. Les périodes de contrôle de notation ont été rendues obsolètes par l'omniprésence de FIN* construire.

  • Chaque ligne de code fonctionnel commence dans la colonne 12 ou au-dessus. Donc, pour ajouter une nouvelle ligne, vous devez d'abord taper au moins 12 espaces: True dans le poinçon de carte jours -- pas vrai pour un long moment. La plupart des compilateurs ont un mode de compatibilité pour les fichiers les plus anciens, mais ils peuvent exécuter texte de forme libre.

  • Natif programmeurs sont pour la plupart subi un lavage de cerveau et incapable de comprendre les concepts de programmation orientée objet: orienté Objet, Cobol est bel et bien vivant dans plusieurs saveurs. Il y a une prise en charge native pour les objets dans le Cobol-2002 standard. Aussi, pendant des décennies, avant que, la plupart (tous) les fabricants de compilateurs Cobol objet intégré de soutien. Microfoyer construit leur propre style de programmation orientée objet, IBM a trop, mais permet aussi de Cobol à interagir de façon transparente avec des objets Java, Fujitsu a fait quelques autres choses. Encore une fois, c'est un cas de quelqu'un disposé à apprendre de nouvelles choses à partir de 1974, pas un vrai argument valable.

  • [Cobol] est plus âgé que Jésus-Christ lui-même: Cobol et C sont tous les deux bien au moyen âge. Ils ont plus en commun avec les uns des autres qu'ils ne le font avec les jeunes punks comme Perl et Java ou interpolations comme .NET, Python et PHP. Pourquoi détestez-vous sur un vieux, gras, calvitie, d'âge moyen, langage informatique comme Cobol et donner C un laissez-passer gratuit?

Entendre que je devrais être heureux que je n'ai pas à utiliser COBOL, à partir d'anciens programmeurs

Cobol est effectivement une très belle langue, pour certaines choses. C'est peut-être la plus riche ET la plus facile des données de définition de l'approche de n'importe quelle langue -- vous obtenez pour disposer chaque octet exactement comme vous le voulez, avec exactement le type que vous souhaitez que l'octet d'avoir. Il y a un revers à cette -- vous obtenez pour disposer chaque octet exactement comme vous le voulez, avec exactement le type que vous souhaitez que l'octet d'avoir. Super-flexible ou super-facile. Choisissez-en un.

FWIW, je le sais et l'utilisation d'une douzaine de langues sur une base régulière et je suis plutôt du genre Cobol pour beaucoup de choses. Certaines choses ne sont pas un bon ajustement, mais rien que vous pouvez faire en C (sauf peu-tourner) vous pouvez le faire en Cobol plus facilement et avec moins de douleur.

Voir les autres faire de l'anti-COBOL-ist blagues

Ainsi, l'apprentissage Cobol semble être une excellente forme de contrôle des naissances...

En conclusion:

Sérieusement, vous devriez apprendre le Cobol. C'est un excellent langage pour savoir, même si vous ne l'utilisez pas souvent (ou à tous). Comme Alan Kay (le père de SmallTalk) une fois a déclaré: "Une langue qui ne change pas la façon de penser n'est pas la peine de savoir" (ou quelque chose comme ça). Cobol meilleure fonctionnalité de IMNSHO est la description des données de la flexibilité. Mais il est tout autour de but d'intérêt général de langue et vaut la peine d'ajouter à votre boîte à outils. Si vous décidez de le détester après que vous l'apprendre, vous permettra de connaître vos raisons. Mais je soupçonne que vous trouverez que c'est un outil simple et flexible qui vous permettra d'utiliser de temps à autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X