当前位置: 网站首页>小程序开发>网络推广

海安400电话申请开通【海安企业网站建设】海安微信公众号小程序开发运营价格、海安微信公众号APP软件客户端设计运营、海安网页页面设计公司费用、海安公司网站制作方案流程改版维护大概需要多少钱

发表日期: 2021-04-27 11:12:00 浏览次数:88

海安400电话申请开通【海安企业网站建设】海安微信公众号小程序开发运营价格、海安微信公众号APP软件客户端设计运营、海安网页页面设计公司费用、海安公司网站制作方案流程改版维护大概需要多少钱

海安,江苏省南通市代管的县级市,由“海水永不扬波”之意而得名,地处江苏省中南部,位于南通、盐城、泰州三大市交界处;东临黄海,东南与如东接壤,西与泰州市姜堰区为邻,南和如皋、西南和泰兴相连,北与东台毗邻;海安东西直线最长71.1千米,南北最宽39.35千米,全市总面积1184平方公里。 [1]  下辖4个街道、9个镇 [2]  ,1个国家级开发区,1个省级高新区,1个省级商贸物流园,1个老坝港滨海新区。 [1]  常住人口86.45万人(2018年末), [3]  市人民政府驻中城街道长江中路106号 [4]  。

海安是江海文明的起源。海安境内的青墩遗址将江淮平原的历史追溯到6000年前,青墩遗址代表了新石器时代江淮东部先进水平。这里留下了苏中七战七捷的不朽神话和角斜红旗民兵团的革命薪火。 [1]  海安是历史形成的综合交通枢纽,汉代开凿上官运盐河过海安镇境, [1]  境内宁启铁路、新长铁路穿境而过,建设中的盐通高速铁路经过海安。海安市是“中国禽蛋之乡”、“中国茧丝绸之乡”、“中国湖桑之乡”、“中国河豚之乡”、“中国紫菜之乡”。 [5]  2018年,海安成功入围全国文明城市提名城市。 [6-7] 

2018年11月,海安市入选2018全国“幸福百县榜” [8]  、2018年工业百强县(市)。 [9]  2018年11月,被科技部确定为首批创新型县(市)。 [10]  2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国投资潜力百强县市、2019年度全国绿色发展百强县市。 [11-12]  2019年11月,被评为2019年工业百强县(市)、2019年中国创新百强县(市)。 [13]  第七批全国民族团结进步示范区(单位)。

Common Lisp的写法如下:

(defun foo (n)
  (lambda (i) (incf n i)))复制代码

Ruby的写法几乎完全相同:

def foo (n)
  lambda {|i| n += i } end复制代码

Perl 5的写法则是:

sub foo {
  my ($n) = @_;
  sub {$n += shift}}复制代码

这比Lisp和Ruby的版本有更多的语法元素,因为在Perl语言中必须手工提取参数。

Smalltalk的写法比Lisp和Ruby的稍微长一点:

foo: n  |s|
  s := n.
  ^[:i| s := s+i. ]复制代码

因为在Smalltalk中,词法变量(lexical variable)是有效的,但是你无法给一个参数赋值,因此不得不设置了一个新变量,接受累加后的值。

JavaScript的写法也比Lisp和Ruby稍微长一点,因为JavaScript依然区分语句和表达式,所以需要明确指定return语句来返回一个值:

function foo (n) {
  return function (i) {
           return n += i } }复制代码

(实事求是地说,Perl也保留了语句和表达式的区别,但是使用了常规的Perl方式处理,因此可以省略return。)

如果想把Lisp/Ruby/Perl/Smalltalk/JavaScript的版本改成Python,你会遇到一些限制。因为Python并不完全支持词法变量,你不得不创造一种数据结构来接受n的值。而且尽管Python确实支持函数数据类型,但是没有一种字面量的表示方式(literal representation)可以生成函数(除非函数体只有一个表达式),所以你需要创造一个命名函数,把它返回。最后的写法如下:

def foo (n):
  s = [n]
  def bar (i):
    s[0] += i    return s[0]
  return bar复制代码

Python用户完全可以合理地质疑为什么不能写成下面这样:

def foo (n):
  return lambda i: return n += i复制代码

或者

def foo (n):
  lambda i: n += i复制代码

我猜想,Python有一天会支持这样的写法。(如果不想等到Python慢慢进化到更像Lisp,总可以直接……)

在面向对象编程的语言中,你能够在有限程度上模拟一个闭包(即一个函数,通过它可以引用由包含这个函数的代码所定义的变量)。你定义一个类(class),里面有一个方法和一个属性,用于替换封闭作用域(enclosing scope)中的所有变量。这有点类似于让程序员自己做代码分析,本来这应该是由支持词法作用域(lexical scope)的编译器完成的。如果有多个函数,同时指向相同的变量,那么这种方法就会失效,但是在这个简单的例子中,它已经足够了。

Python高手看来也同意这是解决这个问题比较好的方法,写法如下:

def foo (n):
  class acc:
    def __init__ (self, s):
        self.s = s    def inc (self, i):
        self.s += i        return self.s  return acc (n).inc复制代码

或者

class foo:
  def __init__ (self, n):
      self.n = n  def __call__ (self, i):
      self.n += i      return self.n复制代码

我添加这一段是想避免Python爱好者说我误解这种语言。但是在我看来,这两种写法好像都比第一个版本更复杂。你实际上就是在做同样的事,只不过划出了一个独立的区域保存累加器函数,区别只是保存在对象的一个属性中,而不是保存在列表(list)的头(head)中。使用这些特殊的内部属性名(尤其是__call__)看上去并不像常规的解法,更像是一种破解。

在Perl和Python的较量中,Python黑客的观点似乎是认为Python比Perl更优雅,但是这个例子表明,最终来说,编程能力决定了优雅程度。Perl的写法更简单(包含的语法元素更少),尽管它的语法有一点丑陋。

其他语言怎么样?前文曾经提到过Fortran、C、C++、Java和Visual Basic,看上去使用它们根本无法解决这个问题。肯 · 安德森说,Java只能写出一个近似的解法:

public interface Inttoint {
  public int call (int i);}public static Inttoint foo (final int n) {
  return new Inttoint () {
    int s = n;
    public int call (int i) {
    s = s + i;
    return s;
    }};}复制代码

这种写法不符合题目要求,因为它只对整数有效。

当然,我说使用其他语言无法解决这个问题,这句话并不完全正确。所有这些语言都是图灵等价的,这意味着严格地说,你能使用它们之中的任何一种语言写出任何一个程序。那么,怎样才能做到这一点呢?就这个小小的例子而言,你可以使用这些不那么强大的语言写一个Lisp解释器就行了。

这样做听上去好像开玩笑,但是在大型编程项目中却不同程度地广泛存在。因此,有人把它总结出来,起名为“格林斯潘第十定律”(Greenspun's Tenth Rule):

任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。

如果你想解决一个困难的问题,关键不是你使用的语言是否强大,而是好几个因素同时发挥作用:(a)使用一种强大的语言;(b)为这个难题写一个事实上的解释器;或者(c)你自己变成这个难题的人肉编译器。在Python的例子中,这样的处理方法已经开始出现了,我们实际上就是自己写代码,模拟出编译器实现词法变量的功能。

这种实践不仅很普遍,而且已经制度化了。举例来说,在面向对象编程的世界中,我们大量听到“模式”(pattern)这个词,我觉得那些“模式”就是现实中的因素(c),也就是人肉编译器。当我在自己的程序中发现用到了模式,我觉得这就表明某个地方出错了。程序的形式应该仅仅反映它所要解决的问题。代码中其他任何外加的形式都是一个信号,(至少对我来说)表明我对问题的抽象还不够深,也经常提醒我,自己正在手工完成的事情,本应该写代码通过宏的扩展自动实现。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

海安400电话申请开通海安企业网站建设海安微信公众号小程序开发运营价格、海安微信公众号APP软件客户端设计运营、海安网页页面设计公司费用、海安公司网站制作方案流程改版维护大概需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878