发布于2026-07-21 阅读(0)
扫一扫,手机访问
matlab编程范例
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
任何傻瓜都可以编写计算机可以理解的代码。好的程序员编写人类可以理解的代码。
编程这件事,复杂性永远是最大的敌人。一个程序如果部件繁多、相互依赖,初看或许很唬人,但真正的高手,能把现实问题翻译成简单、优雅的解决方案——这需要更深的理解。
开发应用或者解决一个小问题时,我们常会感叹:“如果时间再多一点,我就能写出更简单的程序。”为什么?因为一不小心就搞复杂了。复杂度越低,调试和理解就越容易;复杂度越高,维护起来就越头疼。所以,管理复杂度才是程序员的核心课题。
那么,怎么管住复杂性呢?其实有很多通用方法,其中最主要的一条就是——编程范式。今天我们就来好好聊聊它。
编程范式这个词,指的是一种编程风格。它不绑定某一种具体语言,而是说你在编程时采取什么样的思路和策略。
市面上编程语言五花八门,但实现时都得遵循某种策略——这个策略,就是范式。
“命令式”这个词来自拉丁语“impero”,意思是“我命令”。没错,和“皇帝”同源,非常形象——你就是皇帝,给计算机下一条条指令,它一条条执行,然后向你汇报。
这种范式由若干语句组成,所有语句执行完后,结果就存下来了。说白了,就是写一个指令列表,一步步告诉计算机该做什么。
在命令式范式中,步骤顺序至关重要——因为执行某一步时,变量的当前值不同,结果就完全不一样。
举个例子,用命令式的方法求前十个自然数的和:
C语言示例:
#include
上面就是逐行命令计算机,最后存值并打印。
过程式编程(依然属于命令式)允许把指令拆分成一个个“过程”。注意:过程不是函数。区别在于,函数会返回值,而过程不返回。函数设计上追求副作用最小,相同输入永远相同输出;过程则没有返回值,主要目的是完成指定任务,引发期望的副作用。
典型的例子就是for循环——它的主要目的就是产生副作用,不返回值。
用过程式的方式求前十个自然数之和:
C语言示例:
#include
这里用一个简单的for循环搞定了求和。
支持过程式范式的语言:C, C++, Ja va, ColdFusion, Pascal
当操作复杂、步骤之间有依赖,并且需要清晰展现不同应用状态时(比如“SQL加载中”“SQL加载完成”“网络在线”“无音频硬件”等),过程式特别适合,常用于应用程序的启动和关闭(Holligan, 2016)。
程序非常独特,元素之间几乎没有共享(Holligan, 2016)。
程序是静态的,预期不会频繁变化(Holligan, 2016)。
随着时间的推移,项目预期只会增加很少甚至不增加新功能(Holligan, 2016)。
简单。更容易跟踪程序流程。支持高度模块化或结构化。内存需求小,高效且有效。
OOP是目前最流行的编程范式,原因很简单:代码模块化,能直接把现实业务问题映射到代码里。不过,也有人调侃说,面向对象编程提供了一种可持续的方式写“意大利面条式代码”——它让你用打补丁的方式不断堆砌程序。
面向对象的关键特征包括:类、抽象、封装、继承、多态。
用面向对象的方式求前十个自然数之和:
Ja va示例:
public class Main{public static void main(String[] args) {Addition obj = new Addition();obj.num = 10;int answer = obj.addValues();System.out.println("The sum is = "+answer); //prints-> The sum is 55}}class Addition {int sum =0;int num =0;int addValues(){for(int i=1; i<=num;i++){sum += i;}return sum;}}
这里有一个Addition类,包含两个状态sum和num(初始化为0),以及一个方法addValues(),返回num个数的和。在Main类中,创建Addition的对象,设置num为10,调用方法得到结果。
支持面向对象范式的语言:Python, Ruby, Ja va, C++, Smalltalk
多个程序员不需要理解每个组件(Holligan, 2016)。
大量代码可以共享和复用(Holligan, 2016)。
项目预期会频繁修改并随时间不断添加功能(Holligan, 2016)。
通过继承复用代码。通过多态实现灵活性。通过数据隐藏(封装)和抽象提供高安全性。提高软件开发效率——面向对象程序员可以像拼乐高一样拼接新软件对象。更快的开发速度(复用驱动)。更低的开发成本(通常前期投入更多在OOAD分析设计上,但总体成本降低)。更高质量的软件(省下的时间精力可用于验证)。
并行处理就是把程序指令拆分成多个部分,交给多个处理器同时执行。这样,多个处理器协同工作,可以在更短时间内跑完程序。
支持并行处理的语言:NESL(最古老的之一), C, C++
系统有多个CPU或多核处理器(如今很常见)。需要解决某些计算问题,即便用更强大的微处理器也要花几小时甚至几天。需要处理真实世界数据,需要更动态的仿真和建模。
提升性能。常用于人工智能领域。解决问题像分而治之,更加轻松。
想深入了解并行处理,可以参考以下资源:
声明式编程是一种构建程序的方式,它表达计算的逻辑,而不谈论控制流。换句话说,程序员定义“要做什么”,而不定义“怎么做”。
可以这样想象:总统在国情咨文中宣布他想实现的目标;而命令式编程则像麦当劳餐厅的经理,事无巨细地告诉每个人该怎么做。所以最核心的区别:命令式告诉你“怎么做”,声明式告诉你“做什么”。
逻辑编程范式采用声明式方法解决问题,基于形式逻辑。它不包含指令,而是由事实和子句组成。系统利用所有已知信息,试图找到一种让所有事实和子句都为真的世界状态。
经典例子:苏格拉底是人,所有人都是凡人,因此苏格拉底是凡人。
Prolog示例:
man(Socrates).mortal(X) :- man(X).
第一行是基本子句,表示“苏格拉底是人”。第二行是规则:“如果X是人,则X是凡人”。提问:?- mortal(Socrates). 系统回答 yes。提问:?- mortal(X). 系统回答 X = Socrates。
再来一个家庭树例子:
/*定义家庭事实*/father(John, Bill).father(John, Lisa).mother(Mary, Bill).mother(Mary, Lisa)./*提问*/?- mother(X, Bill).X = Mary
支持逻辑编程的语言:Prolog, Absys, ALF(代数逻辑函数式编程语言), Alice, Ciao
如果计划做定理证明、专家系统、术语重写、类型系统、自动规划等项目。
代码实现简单。调试容易。因为基于真/假语句结构,可以快速开发程序。基于思维、表达和实现,也能应用于非计算程序。支持特殊形式的知识(如元层级或高阶知识),且易于修改。
函数式编程最近热度很高,很大程度得益于Ja vaScript的流行。它根植于数学,与语言无关。核心原理是执行一系列数学函数。你写程序就是组合短小的函数,所有代码都在函数内,变量作用域限定在函数内。
在函数式范式中,函数不会修改其作用域之外的任何值,也不会被外部值影响。
判断一个数是否为质数:
Ja vaScript示例:
function isPrime(number){ for(let i=2; i<=Math.floor(Math.sqrt(number)); i++){if(number % i == 0 ){ return false;} } return true;}isPrime(15); //returns false
这里用了Math.floor()和Math.sqrt()数学函数高效解决问题。注意:函数式编程中没有for和while循环,而是依赖递归进行迭代(Bhadwal, 2019)。
支持函数式范式的语言:Haskell, OCaml, Scala, Clojure, Racket, Ja vaScript
处理数学计算。开发面向并发或并行的应用程序。
函数可以快速轻松地编写。通用函数可复用,实现快速开发。单元测试更简单。调试更容易。因为函数非常直接,整体应用复杂度更低。
这种编程方法论基于数据及其流动。程序语句由数据定义,而不是硬编码一系列步骤。数据库是结构化信息的有序集合,通常由数据库管理系统(DBMS)控制。数据库使用表来存储和处理数据,可以轻松访问、管理、修改、更新、控制和组织数据。
一个良好的数据库处理方式对任何公司或组织都至关重要,因为它存储了员工记录、交易记录、薪资等所有关键信息。大多数数据库使用SQL(结构化查询语言)来编写和查询数据。
SQL示例:
CREATE DATABASE personalDetails;CREATE TABLE Persons (PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255));
创建了一个名为Persons的表,包含PersonID(整数)、LastName、FirstName、Address、City(varchar,最大255字符)。
需要构建数据库结构。访问、修改、更新数据库中的数据。与服务器通信。
能处理海量数据(每天存储大量数据,电子表格或其他工具无法胜任)。准确(借助数据库内置功能轻松验证)。易于更新数据(使用SQL等DML语言)。数据完整性(内置有效性检查确保一致性)。
编程范式降低了程序的复杂性。每个程序员在实现代码时都应该遵循某种范式。每种范式都有其优缺点。
如果你是初学者,建议先学习面向对象编程和函数式编程。理解它们的概念,并尝试应用到项目中。比如学面向对象时,抓住封装、抽象、继承、多态这四大支柱,通过动手实践去掌握,你的代码会变得更简洁、高效、有效。
进一步阅读相关资料会很有帮助,希望本文能给你带来启发。
上一篇:少儿编程之硬件编程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8