Questions tagged «procedural»

过程编程是一种设计方法,其中将大型程序分解为过程或子例程。

16
为什么用户定义的运算符不更常见?
我从功能语言中错过的一个特性是,运算符只是函数,因此添加自定义运算符通常与添加函数一样简单。许多过程语言都允许运算符重载,因此从某种意义上说,运算符仍然是函数(在D中,该运算符在模板参数中作为字符串传递,这是非常正确的)。 似乎在允许运算符重载的地方,添加额外的自定义运算符通常很简单。我找到了这篇博客文章,该文章认为由于优先级规则,自定义运算符不能很好地使用后缀表示法,但是作者为该问题提供了几种解决方案。 我环顾四周,找不到支持该语言中的自定义运算符的任何过程语言。有一些技巧(例如C ++中的宏),但这与语言支持几乎不一样。 由于此功能实施起来很简单,为什么它不更常见? 我知道这可能会导致某些丑陋的代码,但是这并没有阻止语言设计人员过去添加易于使用的有用功能(宏,三元运算符,不安全的指针)。 实际用例: 实现缺少的运算符(例如,Lua没有按位运算符) 模拟D ~(数组串联) DSL 使用|如UNIX管道风格的语法糖(使用协程/发电机) 我对确实允许自定义运算符的语言也很感兴趣,但是我对为什么它被排除在外更感兴趣。我曾考虑过分叉一种脚本语言来添加用户定义的运算符,但是当我意识到自己没在任何地方看到它时就停下来了,所以可能有充分的理由为什么比我更聪明的语言设计师不允许这样做。

12
为什么C不被视为“面向对象”语言?
C似乎有自己的准对象,例如“结构”,可以将其视为对象(以我们通常认为的高级方式)。 而且,C文件本身基本上是单独的“模块”,对吗?那模块不是也像“对象”吗?我对为什么C(看上去与C ++如此相似)为何被视为低级“过程”语言感到困惑,而C ++却是高级“面向对象”语言。 *编辑:(澄清)为什么和在哪里,画线,什么是“对象”,什么不是?

4
命令式,过程式和结构化编程之间有什么区别?
通过研究(书籍,维基百科,关于SE的类似问题等),我了解到命令式编程是主要的编程范例之一,您在其中描述了一系列要由计算机执行的命令(或语句)(因此,要求其采取特定措施,因此命名为“命令性”)。到现在为止还挺好。 另一方面,过程式编程是命令式编程的一种特定类型(或子集),您可以在其中使用过程(即函数)来描述计算机应执行的命令。 第一个问题:是否有一种非过程式命令式编程语言?换句话说,没有程序就可以进行命令式编程吗? 更新:第一个问题似乎已得到解答。语言可以是必不可少的,而无需程序化或结构化。一个示例是纯汇编语言。 然后还有结构化编程,这似乎是命令式编程的另一种类型(或子集),它的出现是为了消除对GOTO语句的依赖。 第二个问题:过程式编程和结构化编程有什么区别?您能否拥有一个没有另一个,反之亦然?我们可以说过程编程是结构化编程的一个子集吗?

12
面向对象编程比过程编程有什么好处?
我试图了解过程语言(例如C)和面向对象的语言(例如C ++)之间的区别。我从未使用过C ++,但我一直在和朋友们讨论如何区分两者。 有人告诉我C ++具有面向对象的概念以及定义变量的公共模式和私有模式:C语言没有。在Visual Basic.NET中开发程序时,我从来不需要使用它们:这些有什么好处? 我还被告知,如果变量是公共变量,则可以在任何地方访问它,但是尚不清楚它与C之类的语言中的全局变量有何不同。还不清楚私有变量与局部变量有何不同。 我听到的另一件事是,出于安全原因,如果需要访问某个函数,则应首先继承该函数。用例是管理员应该只拥有所需的权限,而不是所有的权限,但是似乎有条件的也可以工作: if ( login == "admin") { // invoke the function } 为什么这不理想? 鉴于似乎有一种方法性的方法可以完成所有面向对象的编程,所以我为什么要关心面向对象的编程?


7
过程编程时代的设计模式是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 相似:20年前编程是如何完成的? OOP如今非常流行,其起源于1960年代的Simula 67,后来被Smalltalk和C ++所流行。我们有DRY,SOLID,以及许多有关面向对象世界中的设计模式的书籍。 但是在广泛采用OOP范式之前,编程的主要原则是什么?主要的设计模式是什么?

5
单元测试程序代码有效吗?
在当前的项目中,希望将单元测试纳入我们的开发周期,以避免似乎不断渗入我们的代码中的错误数量。问题在于,意大利面条代码的程序化程度为95%,我从来没有使用过单元测试(我所有的单元测试经验都使用过OOP代码) 因此,我的问题简而言之是用我们当前的代码库进行单元测试,还是建议将其推迟到将应用程序迁移到适当的OOP框架后才是明智的选择? PS:当我尝试将这个问题的样式与语言无关时,我认为说明所涉及的应用程序使用PHP和javascript将有助于提供更具体的答案,从而可以回答该问题,因为从经验来看,此类应用程序大多会发生这种情况。

4
用OO语言编写逻辑过程软件的最简洁方法
我是一名电气工程师,我不知道自己在做什么。请保存我的代码的未来维护者。 最近,我一直在研究一些较小的程序(在C#中),其功能在逻辑上是“过程的”。例如,其中之一是一个程序,该程序从不同的数据库收集信息,使用该信息生成某种摘要页面,将其打印出来,然后退出。 所有这些所需的逻辑约为2000行。我当然不想像以前的开发人员所做的那样将所有内容全部填充到一起main(),然后用来“清理” #region(颤抖)。 这是我已经尝试过但不太满意的一些事情: 为每个粗略的功能(例如DatabaseInfoGetter,SummaryPageGenerator和PrintUtility)创建静态实用程序。使主要功能看起来像: int main() { var thisThing = DatabaseInfoGetter.GetThis(); var thatThing = DatabaseInfoGetter.GetThat(); var summary = SummaryPageGenerator.GeneratePage(thisThing, thatThing); PrintUtility.Print(summary); } 对于一个程序,我什至使用了接口 int main() { /* pardon the psuedocode */ List<Function> toDoList = new List<Function>(); toDoList.Add(new DatabaseInfoGetter(serverUrl)); toDoList.Add(new SummaryPageGenerator()); toDoList.Add(new PrintUtility()); foreach (Function f in toDoList) f.Do(); …

2
编程到面向数据的接口
我们的代码库的一部分以以下样式编写: // IScheduledTask.cs public interface IScheduledTask { string TaskName { get; set; } int TaskPriority { get; set; } List<IScheduledTask> Subtasks { get; set; } // ... several more properties in this vein } // ScheduledTaskImpl.cs public class ScheduledTaskImpl : IScheduledTask { public string TaskName { get; set; } public …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.