打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Understanding Programming Paradigms – Janeve.Me
userphoto

2023.01.17 黑龙江

关注
前言
我和我的同事尼莱什·梅瓦达于 2008 年上映mukt.in(在在在在在在举办举办一次关于编程编程的会议。。在在获得获得热烈热烈热烈热烈反响反响反响反响反响反响后后后后后后后后后我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们我们孟买为什么我们需要太多范例?为什么单一个编程范式和编程语言不能解决所有问题?
很高兴看到与会者在会议结束后亲试各种其他的编程语言和范例并更有策略地解决他们的问题。其中的一个位置与我会者
“我要感谢你和 DirectI 举办了如此精彩的会议,对此我深表感谢。我喜欢上 了 LISP 编程语言,发现它非常适合合信处理算法。你建立了正确的辞令,这本书真的很棒。” - Chinni Krishna,Mukt.in '08 会议参与者
我们希望这篇文章也会引起您的兴趣。
编程范式——定义
范式只编程一种基本风格。它就像的蓝图蓝图。。编程编程编程编程范式范式范式提供提供了一些一些非常非常基本基本的模式模式模式模式模式模式模式模式
编程范式模型
在上图中,左边的编程范例很少,它们是模型。右边的编程语言使用这些模型中的一种或多种来实现它们的特性和功能。
我们为什么要为编程范式操心?
桥梁建设场景的学校
让一场景场景场景,学校a和学校a和学校b教教学生。。。。。。搭桥了。
现在镇长决定建造一座新桥,并提出一些条款。
桥应是
x级抗震
不应该侵蚀
低成本
ETC..
现在A校的学生只能想木头的办事,B校的学生只能想铁棍的办事。而这些都不能满足足足市场长提出的所有要求,都没有找到一个最优化的看法。
问题不桥梁桥梁桥梁,而而他们花费了太时间时间和和注意力注意力在在所所的的资源上上资源上资源上资源资源资源而而而而而是是建造桥梁桥梁的的概念概念概念如果如果他们他们他们和意识,他们本可以提出一个最好的解决方案,其中可能包括木头、铁和混凝土等其他材料。
程序人员类比
就像桥梁建筑学校的例子一样,程序员也具备知识、工具和技术,可以仅使用他们知道的编程范式(通常只有一种)来实施解决方案。在 OOP 中实现项目的程序员只能在 OOP 中思考。同样,只用面向过程的语言实施过项目的人只能想到过程。
通过更多地关注编程概念和各种编程范例,它有助于理解多种编程语言以及它们之间的区别。您将能够为编程技术和软件架构带来创新。
编程范式的诞生
如下图所示,编程语言是通过一系列事件演变而来的。
编程语言的演变
第一个是编程概念的开始。这可能是某人想出的绝妙主意,或者可能是用一种已经可用的编程语言精心计划和执行的功能。几个例子:对象、继承、方面、函数、惰性评估、变量作用域、多线程和并发、动态编程等……
这些概念的子集由定义编程模型的编程语言设计者选择。然后他们会忙于实现这些功能,从而产生您最喜欢的编程语言。当一种特定的编程模型成熟并且越来越多的语言实现者开始采用它们时,它就成为一种编程范式。
几个例子:
面向对象编程模型的诞生
面向对象的编程模型
函数式编程模型的诞生
面向函数的编程模型
很少有很酷的编程语言可以提供所有这些流行编程模型的组合。例如,Scala 支持函数式和面向对象的概念,类似地,Oz 具有来自过程式、函数式和面向对象的大量特性列表。
流行的编程概念
很少有非常流行和关键的概念你可能在编程时已经在使用:
急切的评估
惰性评估
程序
职能
外部状态
内部状态
静态打字
动态打字
并发
一个现实生活中的实验
我们做了一个问题陈述,其中给出了一些家庭细节,我们必须找出是否有任何两个人是相关的。我们发现诸如 prolog 之类的逻辑编程语言是此类场景的最佳选择。
%% 事实% 男性(hrithik)。男性(shahrukh)。男性(萨尔曼)。男性(abhishek)。男性(akshay)。男性(阿米尔)。 女性(diya)。女性(艾西瓦娅)。女性(卡特里娜飓风)。女性(malaika)。 父母(hrithik,shahrukh)。父母(hrithik,萨尔曼)。父母(hrithik,diya)。父母(shahrukh,abhishek)。父母(shahrukh,akshay)。父母(萨尔曼,艾西瓦娅)。父母(萨尔曼,卡特里娜)。父母(萨尔曼,阿米尔)。父母(diya,malaika)。 %% 规则% 父亲(X,Y):-父母(X,Y),男性(X)。母亲(X,Y):-父母(X,Y),女性(X)。祖父母(X,Y):-父母(X,Z),父母(Z,Y)。祖父(X,Y):- 父亲(X,Z),父亲(Z,Y)。兄弟姐妹(X,Y):-父母(Z,X),父母(Z,Y)。兄弟(X,Y):兄弟姐妹(X,Y),男性(X),男性(Y),\ +(X = Y)。 %% 查询% ?-妈妈(diya,malaika)% 输出:是 ?-父母(萨尔曼,阿米尔)% 输出:是 ?-父母(萨尔曼,马莱卡) %输出:没有
在 Prolog 中提出解决方案真的很快,因为它是逻辑编程语言。作为 Java 开发人员,我们试图在 Java 和 th 中实现相同的逻辑是我们得出的统计数据:
请注意,这些统计数据是从 Java 专业人员的角度出发的。我们建议您更多地关注编程概念,然后再关注这些概念是如何用语言实现的。如果您有类似的经历,请在下方评论与我们分享。
0
分享
在脸书上分享
鸣叫它
作者
珍妮弗·乔治
技术领导者、软件工程师和敏捷方法论爱好者。目前,担任 Zeta Suite 软件开发主管。他在以托管、云和媒体交付技术为主的不同垂直领域拥有超过 1.6 年的经验。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
The Inner Game of Concurrency Programming: Op...
UPC Tutorials
Domain-Specific Modeling for Full Code Generation(转 www.metacase.com)
《The Swift Programming Language》中文版
Code Conventions for the Java Programming Language
Reading digest - A Robotic Framework for Semantic Concept Learning
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服