我真的很难理解程序和函数编程范例之间的区别.
以下是维基百科关于函数式编程的前两段:
在计算机科学中,函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免状态和可变数据.它强调功能的应用,与强调状态变化的命令式编程风格形成对比.函数式编程的根源在于lambda演算,这是一种在20世纪30年代开发的用于研究函数定义,函数应用和递归的正式系统.许多函数式编程语言可以被视为lambda演算的详细说明.
在实践中,数学函数与命令式编程中使用的"函数"概念之间的区别在于命令式函数可能具有副作用,从而改变程序状态的值.因此,它们缺乏参照透明度,即相同的语言表达式可能在不同的时间导致不同的值,这取决于执行程序的状态.相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数 两次x将产生相同的结果f(x).消除副作用可以更容易理解和预测程序的行为,这是开发函数式编程的关键动机之一.
在第2段中,它说
相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数两次x将产生相同的结果f(x).
程序编程的情况不一样吗?
什么应该在程序性和功能性中脱颖而出?
procedural-programming programming-languages functional-programming
我想学习PHP并希望获得关于OOP和Procedural的想法.我阅读了一些关于OOP和Procedural的其他博客和教程,但我仍然无法理解这种方法.
OOP与程序
我真的想知道两者的代码差异,我对OOP的理解是你创建一个类似的,它可以访问.(我不知道如果那是正确的).
谢谢!
声明性和程序性编程范式之间有什么区别?你能举个例子吗?
还存在哪些其他编程范式?
[编辑:]早些时候我问过这个问题可能是一个关于何时使用OOP与何时使用程序编程的错误框架问题 - 一些回复暗示我要求帮助理解OOP.相反,我经常使用OOP但想知道何时使用程序方法.从回答来看,我认为有一个相当强烈的共识,即OOP通常是一种更好的全方位方法,但如果OOP架构不能长期提供任何重用利益,则应该使用过程语言.
但是我作为Java程序员的经历却不然.我看到了一个庞大的Java程序,我用Perl大师重写了我编写的代码的1/10,看起来和我的OOP完美模型一样强大.我的架构看到了大量的重用,但更简洁的程序方法产生了一个卓越的解决方案.
所以,冒着重复自己的风险,我想知道在什么情况下我应该选择一个过程而不是面向对象的方法.您如何预先确定OOP架构可能过度杀伤并且程序方法更简洁高效的情况.
任何人都可以建议这些场景的样子吗?
什么是提前确定程序编程方法更好服务的项目的好方法?
我对编程很新,但我一直在阅读StackOverflow关于各种编程方法的一些有趣的讨论.我还不是100%清楚程序编程和面向对象编程之间的区别.听起来像面向对象的编程仍然使用过程(方法),但所有内容的组织方式都不同,因为对象是节目的明星.但在我看来,程序仍然允许你做所有相同的事情.与在C中一样,您可以将所有类似的过程放入库中.你真的不能说C中的库类似于C++中的对象吗?
我觉得这个词很贬义.因此,我对维基百科中的两句话感到惊讶:
已知命令性编程用于使用副作用来使程序起作用.反过来,功能编程因其副作用的最小化而闻名.[1]
由于我有点数学偏见,后者听起来很棒.副作用的论据是什么?它们是指失去控制还是接受不确定性?他们是好事吗?
直到最近,我一直在使用mysql*的过程方法.现在我想转向mysqli和面向对象的方法.许多在线资源和书籍都表明,即使在PHP的情况下,OOP也优于程序.在完成一些在线教程之后,我编写了一个连接数据库并选择一个值的小程序.我想知道为什么面向对象的方法更好?加上这是编写OO php网页的正确方法吗?
面向对象的方法
$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";
@ $db = new mysqli($host, $username, $password, $dbname);
if(mysqli_connect_errno())
{
die("Connection could not be established");
}
$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);
$total_num_rows = $result->num_rows;
echo "The Results Are : <br>";
while($row = $result->fetch_array())
{
echo $row['company_id'];
}
?>
Run Code Online (Sandbox Code Playgroud)
程序方法
<?php
$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";
@ $db = mysqli_connect($host, $username, …Run Code Online (Sandbox Code Playgroud) 在下面的脚本中,声明项目的顺序是否重要?
例如,如果add_action指向尚未定义的函数?是否重要或者函数声明是否总是在其调用的任何代码之前?
add_action('load-categories.php', 'my_admin_init');
function my_admin_init(){
//do something
}
Run Code Online (Sandbox Code Playgroud) 我希望得到一些提示,以帮助我突破我认为这些年后的程序编程的坏习惯.每当我尝试在OOP中完成一个项目时,我最终都会恢复到程序化.我想我并不完全相信OOP(尽管我认为我听说过它的一切都很好!).
所以我想我经常执行的常见编程任务的任何好的实际例子,例如用户身份验证/管理,数据解析,CMS/Blogging/eComs都是我经常做的事情,但我无法得到我的围绕如何在OOP中进行操作并远离程序,特别是因为我构建的系统往往工作和工作良好.
有一件事我可以看作是我的开发的一个缺点,我经常重用我的代码,它经常需要更多的重写和改进,但我有时认为这是我的软件开发的自然演变.
但我想改变!对我的同事们,帮助:)关于如何摆脱这个令人讨厌的习惯的任何提示?