posts - 26, comments - 18, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

谈动态语言特征和优点

Posted on 2008-04-28 10:46 Jerson Ju 阅读(175) 评论(0)  编辑 收藏 网摘 所属分类: C#/DesignPattern
      dotnet 2.0开始就支持闭包的特征了。dot net 3.5又提出了Lambda表达式.java 7也开始了动态语言支持.使java c#具备了 python lisp ruby等动态语言。看样子函数式编程思想又要回归了。开始我怀着质疑的态度,因为c#和java都是以oop为中心的,可以说是他们的优点。我们会觉得这不很好吗?为什么又会回到函数式编程去了,那不又回到C时代了吗?
     这里不讨论什么是闭包和Lambda的概念(其实都是函数的特殊表现形式,也就是语言都是函数为主导了),请参考相关书籍。这是很大话题了,要用章节才能说清楚。只是说下动态语言为什么会流行。这些天在家里没事,写了几天python语言,主要是那天分析软件溢出漏洞时候需要用它。它功能太强大了。你用C或c# java 100行代码的事情,我几行或10行就可以搞定。为什么java c#要支持动态语言特点或为什么动态语言挑战了OOP语言,是因为我们目前主要是流行WEB开发,大家是不是每天都在做数据操作和业务操作。你们经常写基础类库吗,可能很少,大多时间在写业务处理和数据操作。这些基本的功能java c#写太慢了。如果做同等事情,动态语言很短时间或很少代码就搞定了。所以在java和c#没支持动态语言前(现在还没全面时候等下出的版本),如果我们要做核心库或重要功能,我们可以用C C++写库(更何况动态语言的库本身已经非常全面,什么都有) python ruby来调用他们写业务。python等写业务流程很爽。
     比如,我要抓取一个网页的html代码看我的代码。

      #file name test.py
       import httplib
       conn 
= httplib.HTTPConnection("www.163.com")
       conn.request(
"GET""/index.html")
       response 
= conn.getresponse()
       data 
= response.read()
       
print data
     
        呵呵,是不是很快。下面是用来测试邮件接收软件内存堆栈溢出漏洞的黑盒测试代码

import httplib
conn 
= httplib.HTTPConnection("192.168.3.151:808")
= 'A'*2048+'B'*2048
conn.request(
"GET",a)
    
       就是发送2048个'A'和2008个'B'的字符串,看这个软件是否崩溃。如果用c写只是是100行代码左右(写的时候还要细心千万不要调试错误很久),不知道你用c# java要多少行代码。所以减少了很多痛苦,你还在加班,我已经到处happy去了。哈哈


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: