[散分]函数式编程时代要来临,你准备好了吗?

enihs 2009-08-25 11:56:52
加精
随着微软推出vs2010,c#4.0,一个新的语言随之诞生——F#;大家绝大部分人应该在学校从C学习,到c++,到java或者c#.但在这个过程中其实我们的思维已经被束缚在如何编写计算机能识别能理解的代码,比如我们必须得考虑给存储空间时而分配变量a时而分配变量b,渐渐的我们淡忘了解决问题的核心逻辑应该是人的思维方式,渐渐的我们习惯于被计算机思维所奴役,渐渐的我们发现编写代码牛b的人是对计算机结构最了解的人......;随着函数式编程在人工智能领域的发展;从Lisp,haskell...到F#,函数式编程语言语言走过的路曲折而漫长。
下面举个简单的例子(快速排序)说明函数是语言如何按照人的逻辑编写(用haskell语言举例,该语言和F#很相似),对照传统c语言的写法做简单的说明:

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)[edit]


上面这段程序你不用了解haskell语言你也可以明白,第二句是排序的核心,把小于x的排在输出的最前面,x排在中间,大于等于x的排在输出列表的最后。

void qsort(int a[], int lo, int hi) {
{
int h, l, p, t;

if (lo < hi) {
l = lo;
h = hi;
p = a[hi];

do {
while ((l < h) && (a[l] <= p))
l = l+1;
while ((h > l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);

t = a[l];
a[l] = a[hi];
a[hi] = t;

qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}


这是一段c语言的快速排序,很明显必须得考虑所用的临时变量何时应该赋上何值,这些原本归计算机考虑的事情。

上面的例子可以看出函数式编程和命令式编程的本质,这里我不是要讨论效率(第一种也许没有第二种快),程序语言做为一种生产工本身就是来加快生产力的发展,如果按照人的思维逻辑编程能够应用到广泛的社会生产中,必然将会取代以计算机的思维模式编程。
F#的推出,微软也有让.net开发者用F#编写核心代码,c#/vb继续完成页面层工作的活。

微软是个孜孜不倦的巨人,从c#1.0到c#3.0的linq,c#娱乐结构化语言第四代语言的特性;从c#1.0到c#3.0,c#4.0,c#又多了动态语言的特性;从c#1.0到F#,一个质变的开始,函数式语言通过广大民众喜闻乐见的vs平台上总算能见到函数式语言了。
(纯属个人见解,欢迎拍砖)
...全文
8388 407 打赏 收藏 转发到动态 举报
写回复
用AI写文章
407 条回复
切换为时间正序
请发表友善的回复…
发表回复
taiq 2010-05-08
  • 打赏
  • 举报
回复
函数式是不错。这么多年都没流行起来,如何确定现在会流行?
jackmtlee 2010-04-22
  • 打赏
  • 举报
回复
函数语言早就有了,ErLang就是
誰是方長 2010-03-11
  • 打赏
  • 举报
回复
发现没几个认识的,技术发展太快啊。。
a5796489 2009-09-30
  • 打赏
  • 举报
回复
准备下个月辞职回家种红薯
无限的翼 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 251 楼 cplusplus_tmp 的回复:]
http://blog.csdn.net/hikaliv/archive/2009/08/05/4413850.aspx
“我不知道 F# 是否会重蹈 C# 失败的覆辙,至少目前我没有找到比它更符合我要求的语言,我还会继续了解它、使用它。就算它最终依然失败了,我还是会用它,就像我现在还在用着 C# 一样,因为它的确能干,尽管干得很烂——没有最烂,只有更烂,语言,也正在这样不断向前发展着。”

哈哈,就像乾隆的诗歌“一滴两滴三四滴”:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
民工写诗
[/Quote]
http://topic.csdn.net/u/20090825/11/ed386116-d797-490e-8728-6471eadeec89.html
正如C#是C++的变体一样
F#是Fortran的变体
微软进入函数编程领域是一件好事
关于Fortran,你可以去看这篇文章
http://blog.csdn.net/looongson/archive/2008/11/15/3304475.aspx
cplusplus_tmp兄你不小心孤陋寡闻了一把
冻结 2009-09-03
  • 打赏
  • 举报
回复
我爱c++!
staare 2009-09-02
  • 打赏
  • 举报
回复
为什么叫F#呢?
F开头的单词,感觉怪怪的
paul9137 2009-08-31
  • 打赏
  • 举报
回复
技术的进步是针对用户的,英文的语言,针对的不是中国用户。
我们没办法只好学它。微软真的好,把代码公开了让别国写自己的语言呀,母语才是最好的表达方式。
比如10楼的例子,英文的同样表示就不如中文对我们更便利。
学学欧盟,罚微软公开吧
IamHandsomeman 2009-08-31
  • 打赏
  • 举报
回复
算了!还是转行吧。给这些大公司垄断光了
IamHandsomeman 2009-08-31
  • 打赏
  • 举报
回复
ERLANG 是这门语言!
IamHandsomeman 2009-08-31
  • 打赏
  • 举报
回复
F# 这玩意是微软有抄袭 有一门 在国内几乎没人问津的一门语言的嫌疑!
我忘记全称了,是 E 开头的!对于系统多进程的变成很牛叉的
a442624404 2009-08-31
  • 打赏
  • 举报
回复
LZ好狂啊
我比较菜,有1年不怎么写代码了,专注于其他方面,但肯定比你强。
这句话。。。
这是不是站在顶端人物,对下面的人,一种俯视的感觉。
笑了。。。。。。
MTCD2008 2009-08-31
  • 打赏
  • 举报
回复
呵呵,技术发展还是挺快的。
  • 打赏
  • 举报
回复
前面有朋友提到了 Fortrain... (不知道拼写对不对) 很古老的语言了 好像比C语言还要老。。。
我最早是从 qbasic, tc, pascal,c,asm...开始的 好像fortrain比这些还要老

当然 他肯定有它的优势 像cobol一样不灭 就是有用武之地的见证 不过 如果说要在vs2010出现 也只能说是他“重现江湖”而已 也不是时代

万一 哪天 windows里出现虚拟苹果机 莫非大家又要涌去学习苹果机了? “苹果机时代”的来临了?

本人愚见 如有错误 望见谅
ttllxx 2009-08-31
  • 打赏
  • 举报
回复
事情还是那么多事情,该怎么做还是怎么做,哪天想想就能解决业务逻辑那就真的就发达了.
  • 打赏
  • 举报
回复
"函数式编程时代" 然后你举例子是 Perl code...
莫非 这个 "函数式编程时代" 指的是 用 类似Perl这样的语言编程的时代? vs2010的F#不知道是什么东西 不过 Perl不是当今Unix,linux系统上最常用的语言吗? 用来写Unix shell。 只不过,微软还没有Perl这样的的语言罢了 就因为Perl这样的要在vs2010里出现 就说是“时代”有点太夸张了吧 如果说vs出现Perl这样的语言(F#? ) 也是估计要垄断的手段 微软的野心就是,Unix等没有的语言他有, Unix等有的语言他也要统统拥有。。。 C#的出现就是证明。 以后会不断的跟进其他人的步伐的 所以 不要因为vs里出现了什么就说是什么时代来临了 对大家来说 实际项目里面需要就去学习(不管是什么),实际根们搭不上边儿的 也用不着浪费时间了
enihs 2009-08-31
  • 打赏
  • 举报
回复
希望大家都就事论事的讨论,有人骂我才陪他狂两句而已,用perl是因为这里没有haskell随便用了个,我不是在这里不是讨论细节,拍砖之后我没说我不还手。
jojotom 2009-08-31
  • 打赏
  • 举报
回复
学习了。。
wenming_356 2009-08-31
  • 打赏
  • 举报
回复
晕...又更新了..服了啊...整死人不偿命啊!!
mjpclab 2009-08-31
  • 打赏
  • 举报
回复
渐渐的我们习惯于被计算机思维所奴役,渐渐的我们发现编写代码牛b的人是对计算机结构最了解的人


就是因为被计算机奴役而产生了OOP,OOP就是按照人类的习惯方式思考,你这话说的,为了表明F#的强大哗众取宠
加载更多回复(376)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧