编程语言和设计模式
时间:2020-03-06 14:39:51 来源:igfitidea点击:
不同的编程语言具有不同的功能或者缺少某些功能。设计模式是解决这些缺点的一种方法。我看过有关静态,面向对象语言(Java,C ++)中的设计模式的书籍和清单,以及有关Python中的设计模式的视频。
我有兴趣查看其他语言(如Forth,Icon,Lisp等)中的一些常见设计模式。简短描述它们的外观以及为什么需要某种语言会很好。也许可以与另一种无需设计模式即可解决此问题的语言进行简短的比较。
解决方案
在Lisp中,我们使用的不是设计模式:
- lambda和闭包(匿名函数和捕获环境)
- 高阶函数(处理函数的函数)
- 宏(语法扩展)
- 不同的评估策略(惰性评估,回溯)
- 第一类函数,类,名称空间,模块等。
- 动态环境(例如随时替换功能)
- 等等。
我真的不知道在这种情况下设计模式意味着什么。如果设计模式是解决某些类型问题所必须遵循的方法,那么它就缺乏编程语言或者环境的功能。计算机可以很好地处理重复性任务,因此必须实现设计模式,并仅使用实际参数进行调用。
有关LISP中的设计模式,我们可以阅读Peter Norvig的文章。
引用此幻灯片:
16 of the 23 design patterns are either invisible or simpler
设计模式并不是真的要与任何语言绑定。它们是常见问题的更一般的解决方案。
Cand .Net中的代表和事件使实现观察者模式变得轻而易举,因为它非常常用,例如处理GUI事件。
设计模式有时称为"惯用语"。在非OO语言(C,Forth,COBOL等)中,它们只是"做事的常用方式"。有时,它们被称为"算法"。每种语言(实际上,每种学科)都有设计解决方案的模式。
如果我们看过两次或者三遍,则可以看到一种模式。如果我们可以描述上下文,问题,解决方案和后果,那么我们已经将模式从模糊的东西提升到了具体而具体的东西。
在非OO语言中,模式通常不被命名和分类。不知道为什么会这样,事实似乎如此。