我真的很难理解程序和函数编程范例之间的区别.
以下是维基百科关于函数式编程的前两段:
在计算机科学中,函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免状态和可变数据.它强调功能的应用,与强调状态变化的命令式编程风格形成对比.函数式编程的根源在于lambda演算,这是一种在20世纪30年代开发的用于研究函数定义,函数应用和递归的正式系统.许多函数式编程语言可以被视为lambda演算的详细说明.
在实践中,数学函数与命令式编程中使用的"函数"概念之间的区别在于命令式函数可能具有副作用,从而改变程序状态的值.因此,它们缺乏参照透明度,即相同的语言表达式可能在不同的时间导致不同的值,这取决于执行程序的状态.相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数 两次x将产生相同的结果f(x).消除副作用可以更容易理解和预测程序的行为,这是开发函数式编程的关键动机之一.
在第2段中,它说
相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数两次x将产生相同的结果f(x).
程序编程的情况不一样吗?
什么应该在程序性和功能性中脱颖而出?
procedural-programming programming-languages functional-programming
在我读过的各种文章中,有时会引用原始数据类型,有时会引用标量.
我对每个的理解是它们是简单的数据类型,如int,boolean,char等.
是否有我遗漏的东西意味着你应该使用特定的术语或者这些术语是否可以互换?每个维基百科页面都没有显示任何明显的内容.
如果这些条款只是可以互换的,那么这是首选条款?
scalar types programming-languages terminology primitive-types
我有一个函数采用浮点数参数(通常是带有一个有效数字的整数或小数),我需要输出一个带有两个小数位(5 - > 5.00,5.5 - > 5.50等)的字符串中的值.我怎么能用Python做到这一点?
是否可以使用静态类型的完整Lisp变体?这样的事情存在甚至是否有意义?我相信Lisp语言的优点之一就是它的定义简单.静态类型会破坏这个核心原则吗?
编程语言(如C,C++)中语法和语义的区别是什么?
如果函数式编程语言不能保存任何状态,他们如何做一些简单的事情,比如从用户那里读取输入?他们如何"存储"输入(或存储任何数据?)
例如:这个简单的C语言如何转换为像Haskell这样的函数式编程语言?
#include<stdio.h>
int main() {
int no;
scanf("%d",&no);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(我的问题受到了这篇优秀文章的启发:"名词王国的执行".阅读它让我更好地理解了什么是面向对象的编程,Java如何以一种极端的方式实现它,以及函数式编程语言是如何实现的对比.)
oop paradigms haskell programming-languages functional-programming
今天,当我随机阅读O'Reilly书中的JavaScript模式时,我发现了一件有趣的事情(第27页供参考).
在Javascript中,在某些情况下,如果大括号的起始位置不同,则会有所不同.
function test_function1() {
return
{
name: 'rajat'
};
}
var obj = test_function1();
alert(obj); //Shows "undefined"
Run Code Online (Sandbox Code Playgroud)
而
function test_function2() {
return {
name: 'rajat'
};
}
var obj = test_function2();
alert(obj); //Shows object
Run Code Online (Sandbox Code Playgroud)
有没有其他语言有这种行为?如果是这样,那么我肯定要改变我的习惯.. :)
我主要关注PHP,C,C++,Java和ruby.
javascript language-agnostic programming-languages language-design
我一直在考虑配置文件及其与代码的关系一段时间了,根据风的日期和方向,我的意见似乎发生了变化.虽然我不断回过头来学习Lisp时的第一次实现:数据和代码之间几乎没有什么区别.对配置文件来说,这似乎是双重的.从正确的角度来看,Perl脚本只不过是perl的配置文件.这往往会对QA和分工等任务造成相当严重的后果,例如谁应该负责更改配置文件.
从配置文件到完全成熟的语言的蠕变通常很慢,似乎是由拥有通用系统的愿望驱动的.大多数项目似乎从一些配置项开始很小,比如在哪里写日志,在哪里查找数据,用户名和密码等等.但随后它们开始增长:功能开始能够打开或关闭,操作的时间和顺序开始被控制,并且,不可避免地,有人想要开始向其添加逻辑(例如,如果机器是X则使用10,如果机器是Y则使用15).在某个时刻,配置文件成为特定于域的语言,并且在那时写得很差.
现在我已经漫步到舞台上,这是我的问题:
正如我之前所说,我对这些问题的回答不断变化,但现在我在想:
configuration programming-languages config configuration-files