热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cobol_我参加了COBOL课程,但不是最糟糕的课程

cobolCOBOL再次成为新闻。人山人海几乎同时提出失业救济要求,而处理这些要求的系统也在失败。为什么?他们需要扩展到前所未有的水平,它

cobol

COBOL再次成为新闻。 人山人海   几乎同时提出失业救济要求,而处理这些要求的系统也在失败。 为什么? 他们需要扩展到前所未有的水平,它们是用COBOL编写的,并且… 我们没有足够的COBOL程序员

以下是“ COBOL程序员”的搜索量增长情况:

大多数COBOL程序员都已退休。 新的COBOL程序员的流水线几乎不存在。 许多人退休只是为了帮助。

这激起了我的好奇心。 我对COBOL一无所知,除了它很旧之外,还经常使用,它是由我的英雄之一, 海军上将Grace Hopper创建的 。 我看了看Pluralsight是否有相关的课程,而他们确实有。 这称为Mainframe COBOL入门。

我为什么要参加COBOL课程?

因此,在阅读了此问题之后,我再次开始考虑使用COBOL并感到好奇。 我想找到一份COBOL程序员的工作吗? 我要用这个吗? 不。我热爱挽起袖子并在危机中提供帮助,我热爱自己的工作和所处的位置。 我不想成为一名COBOL程序员。 我只是好奇。 我必须知道这种已有数十年历史的语言是如何工作的。

因此,我参加了该课程并找到答案。 这是我学到的。

COBOL程序如何工作

当我开始深入研究时,我立即开始听到我不熟悉的术语和缩写。 非技术人员在尝试了解新技术时必须有这种感觉。 令人大开眼界。 有一个巨大的COBOL世界,但我尚未意识到。 我努力了。

COBOL程序是文本(可以的,我可以提到),它们分为四个主要部分:

  • 鉴定科
  • 环境部
  • 数据部
  • 程序科

作为一个经验丰富的开发人员,我可能可以假设其中大部分内容,但是我一直在观察自己会学到什么。 我的第一印象是: 这是组织应用程序的好方法 。 我们通过许多应用程序以某种形式执行此操作,但是这些组织的硬性快速规则吗? 我喜欢。

鉴定科

这提供了标识信息,例如编写该程序的程序的名称以及它们的编译日期。 这些天,我们在注释和打包文件中看到了类似的事情。

环境部

该区域告诉您正在构建哪种系统,正在使用哪种编译器以及类似信息。 它不是声明性的,而是为程序员提供了构建环境的总体思路。

数据部

这用于定义文件字段。 什么样的数据会输入? 如何定义? 这可以是内部字段,例如累加器,标志和计数器,也可以是外部字段,例如传递给程序的参数。

程序科

这就是动作发生的地方。 思考语句(COBOL中的句子),方法,计算以及程序的所有“实质”都位于此处。 这是COBOL程序的最大部门。

这种组织很棒。 这说得通。 我们今天开发的几乎每种语言都具有这种功能。 您打入编译为计算机运行的可执行文件的文本。 那就是相似之处结束的地方。

如何使用COBOL?

COBOL读取文件,对数据执行操作,创建报告或存储新数据。 适用于大规模交易处理。 考虑一下诸如计算500万笔交易的销售数量之类的事情。 它主要用于财务和管理系统的大型计算机上。

根据这项调查 ,有25,757家公司使用COBOL。 在我的职业生涯中,有超过一半的公司在某处使用过它。 它无处不在,每天安静地处理我们的交易。

为什么它仍然存在?

我的猜测是:因为它有效。 人们喜欢开玩笑讲COBOL,但这是一种致力于可靠性的语言。 当您输入大量数据时,它很高兴。 如果需要,它可用于处理数百万条记录,并且日复一日地“有效”。

它主要用于财务和政府部门,因为组织花费了大量时间和金钱来构建COBOL系统,而这些应用程序在数十年后仍不断发展壮大并开始工作。 与众不同,COBOL专注于性能和向后兼容性。

如果没有损坏,请不要修复。 COBOL的最大弱点似乎是知道它的人数,而不是语言本身。

与现代发展的相似之处

您将文本代码编写为.SOURCE文件,然后将其编译为.LOADLIB文件。 然后,这些文件由.JCL文件运行。 诸如编译器和链接器之类的东西以及其他似乎熟悉的东西。

现代开发人员将熟悉COBOL的其他一些方面:

用于调试的输出 -COBOL具有错误代码和其他输出。 您可以将它们通过管道传输到SYSOUT或文件。 您可以像其他任何语言一样,花很多时间查看出于调试目的正在发生的事情。

可重用代码 -COBOL具有对抽象事物至关重要的功能,以及在COBOL中创建可重用代码的方法。 如果那是您的事,那么它甚至是面向对象的。 您可以构建要重用的库。

类型很重要 -类型定义,转换以及所有其他令人头疼的问题都存在于COBOL中。 类型很重要,但是数据格式化甚至更重要。 您确实必须在COBOL中做到这一点。

命名很重要 -在用COBOL命名事物时,您具有很大的自由度,而您的操作方式很重要。 似乎有人在强调“此程序将不断扩展并保持数十年”,这在编写Angular应用程序时没有太多考虑。

句号就是您的分号 -在COBOL中,一切(我的意思是一切)都以句号终止。 这就是COBOL中“句子”的概念。 该语言努力使人类可读。

COBOL具有熟悉的控制结构 -毫不奇怪,您可以从当今使用的任何编程语言中识别出许多循环,if语句和其他控制结构。

我发现跳入COBOL,根据我对其他语言的经验,很容易理解如何滚动的基础知识。 您可以大致了解它是如何工作的,但这并不完全陌生。 在开始使用代码之前。

与现代发展的差异

一旦开始使用COBOL,您会发现此代码与常规Javascript编码之间存在一些巨大差异。

您需要一个大型机 -要真正开发COBOL,您需要一个大型机。 我在网上找到了一些模拟器, GnuCOBOL非常酷,但是真正的交易存在于大型机上,因此您需要访问一个模拟器才能进行真正的COBOL开发。

可读性强 -一切都非常可读,尽管代码大写,所以大吼大叫。 语句称为“句子”,以句点分隔。 该期间很小,因此很难找到忘记添加的位置。

严格的语法 -COBOL在严格的语法方面赢得了声誉。 每行开头和结尾的空格(例如书挡)以及每个空格和字符都很重要。 您需要鹰眼才能使用这种语言进行编码。

野性约束 -2020年存在不应该存在的约束,但是COBOL致力于向后兼容。 一行COBOL代码始终为80个字符(除非不是),并且报告的宽度为132个字符。 为什么? 由于打Kong卡和老式打Kong线打印机。 对真的。

内置资源小巧性 -您真的可以看到他们如何设计资源节约型语言。 内存,硬盘空间和CPU周期都很稀少,因此请明智地使用它们。 现代开发人员很容易忘记这些东西曾经是多么昂贵和珍贵(我们现在应该这样对待)。

您必须非常明确 -COBOL中没有发生太多的“懒散的鹅”编程,它不允许这样做。 您必须故意做任何事情。 这是非常原谅的,这是一件好事。

工作是语言的重点 -很显然,COBOL是围绕“工作”建模的。 这些程序不是像许多应用程序一样的实时交互式程序,它们被设计为在指定的时间运行,并且代码从上到下运行。 它的意思是读入数据,对数据进行处理,然后将其吐出。

我从这门课程中学到的东西

学完本课程后,我对语言有了尊重。 COBOL的说唱不好,主要是因为它的年龄和Y2K错误(这不是COBOL的错),但它仍然存在是有原因的:它从一开始就被设计成坚如磐石。 它并非没有缺陷,但没有人能说出运行数十年的系统的持久性。

我对COBOL感到很自在,可以对它的工作原理有一个大致的了解。 我不会雇用我作为COBOL程序员,但是我相信,如果我愿意的话,这门课程将使我走上那条道路。 作者在解释概念,有趣/不枯燥以及很好地解释最佳实践和陷阱方面做得非常出色。

如果您是2020年的开发人员,则可以从本课程中学到很多东西。 您可以学习一些在COBOL世界中似乎很普遍的原则(我自己决定):

  • 保留资源 -内存,磁盘空间和CPU周期不是空闲的。 使用您的构建尽可能地保护它们。
  • 在所做的所有事情中都要明确 -花些时间弄清楚您需要什么,然后声明它。 考虑数组和结构,而不是列表和泛型。 性能来自确切地了解您的需求和时间。
  • 就像将要生存数十年一样编写代码 -对于COBOL程序员而言,这是事实。 提前考虑并采取行动,好像您的代码将持续多年。 您应该如何编写它,以便可以进一步维护它?
  • 避免更改 -现代开发人员喜欢重新发明轮子。 我们还喜欢引入重大变化,并告诉人们如果他们不喜欢它,则进行升级。 COBOL仅在没有其他选择时才破坏事物。 到2020年,我们还需要更多。

您应该使用Mainframe COBOL入门 。 您会惊讶于所学内容。 如果您愿意,请告诉我您的想法! 我很想聊聊。

翻译自: https://hackernoon.com/i-took-a-cobol-course-and-it-wasnt-the-worst-z1ba3yrp

cobol



推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
author-avatar
敏儿儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有