如何绕开信息技术的地雷

本文提出了信息技术(IT)的一些问题,并考虑了解决这些问题的方法,这可能是计算机系统和编程语言的体系结构的开发人员以及IT领域的业务所感兴趣的。但是,除了其中一些人以外,所有这些人几乎都不会相信存在问题,至少在本文所述的问题上尤其如此,尤其是因为该行业正在发展的还不止这些。但是,尽管一些问题尚未得到认识,但是,它们必须“渐进地”解决很长时间并逐步解决。如果您有意识地一次又一次地解决它们,就有可能节省人力和金钱。

如果不使用先进的IT技术,那么经济和社会交流都是不可能的。因此,让我们看一下为什么当前正在使用的技术不再适用,以及应该用哪些替代技术。作者将对富有建设性的合格讨论表示感谢,并希望找到有关提出的“问题”的现代解决方案的有用信息。

自von Neumann时代以来,定义计算机体系结构的思想就没有太大变化。它基于执行一系列处理数据的命令过程中的算法。因此,主要参与者是进程(Controlflow),这些进程(根据优先级和层次结构)在操作系统(OS)的控制下提供(根据优先级和层次结构)计算资源。

中央(引导)程序描述了汇总中所有数据处理的顺序和依赖性。并且,当创建新型数据时,有必要在领先程序中预见其及时生成算法的启动,并与其他程序一起组织使用它们的时刻和方法(“约会”)。但是为此,仍然有必要协调应从开发者那里找到的数据结构(这并非没有开发者的商业利益)。并且,如果根据集成开发的逻辑,先前由独立的领导流程处理过的数据集开始相交,那么就有必要开发一个集成了先前独立程序的新领导流程。
随着数字技术的进步和发展,所有这些都会持续发生。因此,仅需要越来越多的力和手段来使系统保持工作状态,该系统就变得更加垄断并且越来越不可见。即使在企业级别,不同类别的数据(包含数据的表或结构)的数量也达到数十万。总体上讲,不可能有专家会想象实际上它们都已存储。碰巧的是,随着数据库(DB)中处理系统的发展,旧结构中的数据中的“垃圾”会累积起来,虽然这些垃圾尚未参与新的处理算法,但是在生成数据请求时可以“拾取”。

与使用现有的对象编程技术相比,在旧的基础上向新的应用程序功能添加新的附件通常比理解现有的算法和数据结构更容易。如此多次。很容易看出这是一个死胡同。

当然,他们寻求并找到摆脱僵局的方法。这些是“即时”的数据库修改系统,消息传递协议以及用于数据交换的跨平台主干(总线)等。所有这些技术和软件工具平台有时每月都会更新几次。但是,如果这种情况继续下去,那么下一次IT开发的收益将小于此开发成本。 IT的死胡同有以下几个原因:

  • -, ;
  • -, , ;
  • -, , ( ), ;
  • , , . , -.

作者并不声称对现代系统平台和编程语言有全面的了解,尤其是在他退休后才开始发展。我的编程经验始于开发用于从遥测记录器中采样数据以测试飞机和火箭发动机(包括月球火箭)的驱动程序。

那时,用于IVC综合设施的所有软件(每个都近200平方米的两个mashroom)都被一个有线程序耗尽,用于最初输入一张打孔卡并启动其中包含的代码以及最少的例程(如一捆皮卡)。其余的人尽其所能。但是对于特殊的遥测记录设备,没有软件。

我必须用机器代码和绝对地址编程,同时为各种输入/输出设备和子程序开发一堆驱动程序,首先是将十进制数字转换为二进制代码并重新格式化。好吧,然后我指的是“我们没有经历过”,甚至放弃了在拜科努尔六个月的跌落,在那里部署了类似的系统-那时,即使是出差,他们也提供了很好的羊皮大衣。当我终于到达那里时,它不再存在了。女程序员以前在那里学习过,但是由于她们是来自另一个部门的特别信任,所以她们不应该这样做,尤其是在夏天。顺便说一句,他们说当时仍然有安装和射击天花板固定装置。因此,当一个女孩第一次按下“初始输入”键时,同时,组装手枪的第一声响了。女孩和椅子都被带到了离遥控器几米远的地方。

是的,尽管那时我还不是老大,但我对整个软件体系结构的开发和遥测处理的各个阶段都没有专心。因此,我不得不亲自加班开发一个汇编器,然后实时侦听调试器(用于2种不同类型的计算机,其中一种也用于穿孔卡,另一种用于穿孔带),以拦截系统中断并检测循环。作为物理技术学院(MIPT)的毕业生,我不得不承担所有这些二元的废话,而其他人则没有明确的计算算法。他们之所以把我带到这个办公室,是因为在邻近的设计局(战后成立的,最初的一半员工是德国容克斯和梅塞施密特工厂的工程师和设计师,这些设备随设备一起出口到了苏联,人员和他们的家人)我正在MPT-9模拟计算机系统上建模涡轮喷气发动机的系统(灯,下图-没有更好的图片;机柜是一个人的大小,白色矩形是每100伏特的电压表的刻度),用于调试发动机控制系统。 。



输入AVM或数字计算机-有什么区别?我必须说,对于那个时代的体育系毕业生来说,实际上几乎没有。但是,在我的老师那里,这绝没有教过,后来碰巧就没有了。军事部门向我们传授了模拟和数字计算机(半加法器,移位寄存器等)的操作原理,例如计算将目标级地对地导弹的参数发射到计算尺上的第5位的技巧米长。我相信现在没有这样的事情了。但是,当他们决定在我们的课程中引入编程课程时,几乎所有(!)学生都表示,作为未来的“纯科学家”,他们将永远不需要这样做-并抵制了讲座。当然,这不适用于计算机工程系的学生-因为他们在BESM-6的例程中每节省一微秒,据传言,给了将近20卢布的溢价。尽管事实上高级课程的奖学金是55卢布。而我们,罢工者,取消了编程课程的学习,但是后来我和我的许多同学以某种方式结束了编程。

随着时间的流逝,对于我们的计算机(嗯,它仍然不是BESM-6,但是更简单并且鲜为人知),出现了带有Algol-60的翻译器,但是由于没有子程序库,因此某种程度上不需要它们。在汇编语言中,使用调试器可以,很容易对任何东西进行编程。下一步,是开发带有控件的可互换磁带和磁盘操作系统(从应用程序软件和操作员界面的侧面看是透明的,这是为了从站立的磁盘中退出),现在可以说是蝙蝠文件。最后,开发了一个任务管理器,它运行脚本bat文件以检索操作员请求的数据。他甚至想开发一个成熟的操作系统,因为后来证明它类似于Unix,但是与向Ryad类型计算机的过渡有关,这并不是不合适的。

公平地说,我会说我不仅从事系统软件。当有必要开发用于频谱分析的快速傅立叶变换程序时,我不得不迅速而又迅速地做到这一点,特别是因为找不到可理解的FFT算法描述。我不得不重新发明它。好吧,像那样的事情。

我注意到,由于该部门内所有事物的保密性,所有开发的算法和处理系统都未在任何地方公开,而且,这些数据和处理系统也不符合企业的概况-仅仅是服务部门。

在“ perestroika”之前,我曾受邀在一家专门的莫斯科研究所的分支机构负责系统软件实验室。任务是在多处理器控制控制器(包括硬件和软件)中开发分布式计算系统。好吧,然后这个研究所像许多其他研究所一样不复存在。我认为有必要在文章中包含这种“怀旧”,仅是为了表明作者对自动化系统有一些概念,可能有些过时了。

因此,如果我们需要建立一个不断发展的,充满活力的,有吸引力的社会有机体,并有足够的经济体,那么,正如作者认为的那样,建议改变信息技术的组织原则。即:

  • , , .

全局分布式数据库应该是基于单一原则构建的层次结构数据库的集合。

如果人类曾经同意创建一种国际科学语言,那么……,何时,何地,曾经,将,……,……之前,之后,……之间都没有“谁(什么),谁(什么),包含(包括),属于……”的关系。现在,总是,从……到……如果……然后,是什么,如何,为什么等等。”如果它们由语言结构和/或关系符号(可以反映元数据中描述的数据结构的关系)明确且明确地表示,则可以将科学文章直接加载到该知识库中,并且可以使用语义内容。

这样的数据库作者的架构和原理得到了发展引入了其中的一些变体,并在数百万人口的市政厅文书系统中使用了数年之久,没有受到任何投诉。

  • 对于每种类型的数据,必须指出其目的(以及足够详细的文本描述),其与其他数据的关系以及从先前接收(或计算)的数据中获取数据的算法。同样,应描述其在典型用户界面中的呈现形式,并应指出相关的工具。这些称为元数据的特征和工具也是普通数据,因此必须包含在数据库中。至少在需要它们的数据库中(如果未在更高级别的数据库中显示)。

元数据用于指示潜在的存在,并确保根据其语义来选择现有数据。如果可能,应将本地元数据映射到更高层次数据库的分类器中的元数据。作者当时在任务管理器以及城市养老金和福利支付系统中都使用了元数据的类似物,该数据库的结构由作者开发,在政府改变了养老金的支付和索引算法时,他领导了自动化部门。如果不是一个月3次。

这并不是说他们没有解决这个问题。首先,XML标准允许您使用标记来表征数据,尽管它们是线性文件。解决此问题的方法更加全面:例如google,“ OWL本体描述语言”。在此,当数据存储在数据库中而不参考任何原始结构,并且用户所需的结构根据元数据中的描述而形成时,作者提出了极为激进的解决方案。

  • 流计算应使用Dataflow技术执行,即进行数据管理。必要的初始数据出现后,应根据为其指定的算法计算新数据。计算必须在网络上分散且并行地执行。

数据处理应包括将新数据写入数据库,并根据满足比较条件的样本使用符合指定指定先前计算或输入源数据条件的样本来计算新数据。形成必要的样本后,将自动接收新数据-整个分布式数据库网络中的依此类推。不需要指定动作的顺序(即,不必编写控制程序的程序代码),因为在根据数据进行管理时,在有必要的源代码的事实的情况下执行下一个动作。

(在表数据库“ Excel”中使用了大约相同的计算技术,在该单元格中计算单元格中的下一个数据,因为它们是在具有源数据的单元格中计算出来的。在这里,您也不需要为此描述命令的顺序。)

所有的``编程''都归结为描述元数据中的新数据及其属性(包括访问权限),关系,用户界面中的显示特性(如果需要),为源数据的属性指定条件,其值确定其在样本中的出现以及设置处理算法。在超过99%的情况下,该算法归结为指示应如何处理一系列样本中的数据:相加,计算平均值,找到最大值或最小值,计算统计偏差,确定回归函数等。按指定选择的数组。在一般情况下,计算(的乘积之和,等)是可能的几个样品的,例如,Ñ从样品{N}ķ从样品{K}等,其中例如k依次是样本{N}中参数K N的样本。等等Excel示例中适合用于计算新数据的单元格的公式可以类似地构成软件模块中算法的描述,该软件模块用于从Dataflow技术中的源数据中获取新数据。为此,就像在Excel中一样,您通常不需要吸引专业的程序员。有时并且仅用于特定任务吗?

因此,几乎没有例外,应用行业的专家可以创建信息化任务的整个范围,而无需专业程序员的参与。同一位专家可以用元数据(如果没有类似物)独立地描述他们处理的数据,就内容,目的和图像而言,他们可以复制他们熟悉的纸质文档。一个简单的设计器构造函数就足够了。任何文档(也包括报告或科学文章)将不仅是文本文件,还将是数据库中信息的组合,还提供了用于表示和使用它们的工具,并在元数据中指明了这些工具。

现在,为了提供此类功能,浏览器通过添加Flash Player,Java脚本选项,引入新标签,Web服务等来不断扩展其功能。元数据将允许组织,本地化和组织这些过程。
而且您始终可以组织新的任意文档(数据集)的接收而无需编辑整个系统功能的现有算法,因为来自分布式数据库的相同数据实际上可以参与各种不同的算法,以从所需样本中获取新文档。为了实施数据管理中的贸易综合会计和统一的分布式数据库,您甚至不必将报告发送到任何地方-只需开始运行即可。出现的数据将被提取并自动考虑在内。

涉及业务流程自动化的开发人员可能会指出,所有这些功能早已在BPM系统的特定方面实现。在BPM系统的示例中,我们看到了数据管理的想法是如何秘密的,即他们没有意识到这种现象的实质,却渗入了实践-到目前为止,当然是在中央宿主程序的控制之下。但是,可惜的是,要使BPM系统(例如“最酷”的“ ELMA”)正常工作,公司应该让一名程序员对C-sharpe编程语言有很好的命令。作者能够参与该系统的管理。。如果没有专职程序员,则必须根据建议的模板调整结构和业务流程。但是,这种方法与获取具有适应性和集成性所有问题的应用程序的常规做法没有什么不同。

事实证明,在数学上以定向图的形式纯数学形式化的数据管理思想和以“令牌”形式的可移动数据的数学管理思想在实践中很难实现。另外,需要使用昂贵且耗能大的关联存储器。因此,作者提出了“粗粒度”模型形式的实现,其中每个模块完全执行本地数据库中源的处理。类似的模块将在其他本地数据库中运行,并将结果合并到更高级别的数据库中。处理所有注册的数据源后,新数据将收到就绪状态。
如果本地数据库中没有数据,则将请求发送到更高级别的数据库,依此类推。并且已经根据请求将根据下级本地数据库复制该请求。优化的结果也将集成到顶级数据库中,然后发送到发起请求的本地数据库,或者如果请求来自上方,则发送到层次结构中的更高级别。因此,不必知道所有来源和收件人的电子邮件地址。对于每个本地数据库,仅知道更高层次数据库的地址就足够了。组织事务的这一原理允许轻松地扩展和扩展系统。
可以使用流程图显示最简单明了的计算算法。它们显示了什么数据输入到每个软件模块,以及其中计算出的输出在哪里传输。作者开发了DFCS语言,用于在由数据流控制的系统中对并行计算进行编程,在该系统上可以描述流程图的所有连接。

在下面的框图示例中,彩色平行四边形(大和小)指示数据,在白色块中-具有数据处理算法的程序模块。虚线表示由机电装置执行的动作。



框图精确地定义了与哪些模块相关联,并且不需要关联存储器,但是应该提供一些数据同步措施,特别是如果使用算法分支的“窄”部分的并行化。某些最佳组合的软件模块(PM)被加载到计算单元(WB)中。从PM到PM的数据通过可虚拟表示的端口或物理设备的寄存器传输。在管理数据时,模块,设备或端口,文件或数据库查询在功能上是相同的并且可以互换。物理端口用于通过数据通道在WB之间交换数据,也可能在一个WB中的PM之间交换数据。数据仅临时存储在端口(寄存器)中,有时甚至存储在某些队列中。而且,主数据数组应存储在数据库中,该数据库应作为单独的专用设备执行,因为数据访问接口应该相同-不管特定数据的结构和关系如何。

设备之间的数据通过数据总线传输,使用该数据总线可以放置许多设备和模块。在开始交换数据之前,交换设备必须“抓住”总线,以便没有人干预。捕获通常根据用于加权总线上设备地址的算法进行,并且至少占用与其地址位深度一样多的时钟周期。
然而在上述研究所中,甚至存在于硬件中的技术,无论设备数量多少,都可以通过设备以1-2个周期进行总线捕获。随着技术的进步,您可以使用数十或数百条数据总线进行交换,并选择一条免费的总线。下图显示了计算中心的体系结构。可以通过数据传输适配器连接它们的总线来使组合物联网。

控制模块操作的不是操作系统(OS),而是数据移动协议(SDA)和传输程序。交通控制程序非常紧凑,位于每个计算单元中。

如果输入数据在端口中,则是SDA启动模块。生成的输出数据放置在输出端口中,传输程序(或驱动程序)从该端口通过数据总线将其传输到连接到第一个模块的下一个模块的输入端口,并且已经有它自己的SDA程序启动了它。如果模块在同一计算单元中,则不使用传输程序,依此类推。如果模块正常工作,但是没有新输入,则SDA停止执行该模块。当该端口出现在端口中时,模块将恢复运行。但是,实际上,SDA的这些看似明显的规则无法确保Dataflow系统的稳定运行。因此,“正确的”交通规则更加有趣,而且我有理由认为这是可以实现的

归功于流量规则,数据驱动系统从根本上是分散的。完全不需要OS作为控制任务,队列等的执行和共享的系统,甚至用于资源管理。所有此类请求都是通过在其端口中放置带有需求的数据来访问服务(作为库模块)而提出的。如果没有资源(忙),则答案必须等待,可能需要通过超时端口退出。由于计算设备的所有设备和功能的完全分散化,因此易于扩展,并且可以在必要时在可用资源可用的情况下加载和复制任务块集。原则上,可以为流量规则补充并行化服务,以用于流和在其前面创建数据队列的块副本的其他加载。通过在计算机网络的自主计算资源之间成功分配模块,可以实现计算管道,当接收到下一批(新)源数据的同时获得输出(过去数据)的结果时。

那么,应该采取什么步骤来实施高级IT?

  1. 开发适用于在互连中存储任何数据(包括元数据描述)的统一数据库结构。
    原则上,这已经完成,但尚未在任何地方发布(尽管经过测试)。
  2. 开发基于元数据的分层数据库组织和交易技术(上下)系统,以排除对数据源和使用者的特定寻址。
  3. 使用关系数据库技术中实现的统一结构数据库模型,在Web服务器上现有Web技术的框架内开发并最终实现对Dataflow技术的模仿目前,这将是最有效的投资。
  4. ().
    , , .
  5. , .
    DFCS . .
  6. .1, .
  7. , .
  8. .
  9. .
    .

显然,在现有的Web技术中使用Dataflow模拟(请参阅第3节),无法构建自动化过程控制系统(APCS)。为此,为了在多处理器控制器中使用,有必要在上述研究机构中“在硬件中”实施数据流,直到“ perestroika”为止。但是,您可以轻松地实现创建企业管理系统,开发独立的社交网络和管理业务流程的所有可能性。

我认为,首先,有必要完成第1项,特别是因为解决方案肯定存在,然后再完成第2项和第3项,可以使用标准Web技术来执行。。这样一来,每个人都可以独立创建一个完整的管理系统,无需使用专业程序员,即可计算分布式企业的资源,产品和客户。可以在部门,企业以及更远的任何地方组织和创建几乎相同的“社交网络”。

但这并不意味着程序员会面临失业。相反,得益于统一的数据交换接口和元数据分类器,由它们开发的服务(软件即服务)将能够获得最广泛的应用领域,并且将按比例向开发人员付款。当然已经做了类似的事情,但是通过数据表示的中间转换通过特殊手段。

那些将提供系统服务以集成到Dataflow技术中的人将能够从该项目中获得最大的收益。这不是广告,特别是因为既没有开发商也没有分销商。但是很明显,与愿意支付昂贵的专业软件费用的用户相比,有更多的用户愿意以昂贵的价格独立地在可理解的界面框架内(比在Excel中更容易)开发纸质文档中的应用程序任务,活动的各个方面。此外,应用软件的专业开发人员很可能也会使用所提供的服务,因为这样,随着开发中的项目的发展,他们将一劳永逸地解决数据集成的问题。

如果在Web技术中成功模拟了Dataflow,则将有理由在硬件中实现Dataflow技术。技术开发最有可能从第4条和第6条开始,即以通用设备的形式生产数据库,因此放弃了文件系统。应在数据库接口(它所属的接口)中使用千兆字节内存,以将阵列放置在数据请求上。在模块中,仅需要命令(处于只读模式)的主存储器,而对于数据,则仅需要数百(或数千)个寄存器(端口)。例如,状态改变时会中断。在这里,“寻求” IBM Research的最新发展,似乎“允许在存储单元中执行计算”。加上用于排队的缓存。

可能还需要第5节中提到的编程语言来对数据仓库中使用的计算单元进行编程(请参阅第6节)。 DFCS具有以下功能。在模块网络的每个部分(以及任何模块内部)中,数据仅出现在属于输入和输出(称为端口)的位置。也就是说,在模块的端口中声明数据表示就足够了。由于模块的执行顺序是在数据准备就绪时确定的,因此无需规定模块的特定执行顺序-您只需要描述它们之间的切换即可-顺序无关紧要。也就是说,该语言是声明性的。由于所有内容都归结为带有参数的指令,因此不需要解析任何语法结构。该程序在“编译”过程中可以直接加载到内存中。

流程图的模块化结构与自上而下的编程概念完全匹配,并且仅通过端口进行的模块交互可确保遵守封装原理。此外,模块化原理和数据的自然接口为组织程序的集体开发创造了最佳条件。

在DFCS语言的软件部分中,应该使用标签和过渡命令,这似乎与结构化编程的原理相矛盾。但是,根据我自己的编程经验,我可以说带有标签和过渡指令的程序通常比带有重复的块副本和一组“标志”以排除过渡命令的程序更紧凑,更易于理解。一些专业人士也有类似的看法

可以从Yandex磁盘上下载该语言的简短说明

All Articles