我将在大学学习Ruby,Haskell和Prolog.现在,我想知道什么应该得到我的大部分注意力.我有半年的时间来做这三个,这意味着我需要决定一种语言来获得我的课外时间.其他我将学到的就是在课程中做得非常好.
我对Haskell和Prolog很熟悉,知道学习它们会教会我一些非常重要的计算机科学概念.我不太确定红宝石.
通过一些教程和介绍,我得到的印象是红宝石有很多浅薄的魔力.现在我问红宝石人:在我花了半年的时间学习它之后,我决定再也不用它了,我会得到什么,Python还没教过我.
这个问题并非旨在为红宝石"提出理由",尽管我意识到这是一个很有争议的潜在话题.
我现在使用Python进行所有CS工作.我也用它做了很多函数式编程.我也已经非常熟悉面向对象编程(在Java,Python和C#中).正如我所说,我会用Prolog做一些逻辑编程.
然后留给Ruby教我什么?
进一步淡化问题:
我对编写有趣的程序或酷的Web应用程序不感兴趣.我只对计算机科学课感兴趣.实现算法,数据结构等.(虽然玩得开心肯定不会受伤)
理想情况下,所讨论的概念需要在大约1.000小时内可以学习.
我对Rails一点也不感兴趣.在这种情况下,任何隐藏复杂性的技术都是有害的.
我无法帮助这个问题具有争议性.但是这个问题的理想答案将提到一个非常重要的理论计算机科学概念,红宝石帮助程序员使用和理解,以获得科学的辅助知识.
我想到的候选人是元编程和多线程.我不知道红宝石是否特别适合学习其中任何一种.
我正在研究一种中间语言和一个虚拟机来运行具有一些"有问题"属性的函数式语言:
中间语言是基于堆栈的,具有当前命名空间的简单哈希表.只是让你了解它的外观,这是McCarthy91的功能:
# McCarthy 91: M(n) = n - 10 if n > 100 else M(M(n + 11))
.sub M
args
sto n
rcl n
float 100
gt
.if
.sub
rcl n
float 10
sub
.end
.sub
rcl n
float 11
add
list 1
rcl M
call-fast
list 1
rcl M
tail
.end
call-fast
.end
Run Code Online (Sandbox Code Playgroud)
"大循环"很简单:
随着sto
,rcl
和一大堆更多,有三种指令函数调用:
call
复制命名空间(深层复制)并将指令指针推送到调用堆栈call-fast
是相同的,但只创建一个浅的副本tail
基本上是'转到''实施非常简单.为了给你一个更好的主意,这里只是一个来自"大循环"中间的随机片段(更新,见下文)
} else …
Run Code Online (Sandbox Code Playgroud) interpreter functional-programming go intermediate-language vm-implementation
是否有一个python库用于将ascii数据编码为7位GSM字符集(用于发送SMS)?
在GTK2中,StatusBar只是一个像HBox这样的简单容器.当我尝试将子窗口小部件添加到状态栏时,Glade 3(gtk3)现在显示此消息:
什么是占位符?
我更喜欢在Glade中完全构建UI,但是如果它不再起作用,那么在代码中构建它也很好.我通过GObject内省使用Python 3.2和Gtk.
我注意到我不能在我的python源代码中使用所有unicode字符.
而
def ?(?):
Run Code Online (Sandbox Code Playgroud)
完全没问题(尽管是荒谬的[可能?]),
def N(N?, t, ?) -> 'N(t)':
Run Code Online (Sandbox Code Playgroud)
这是不允许的(下标为零).
我也不能使用其他一些字符,其中大多数我认为是字母以外的东西(例如数学运算符).我一直认为,如果我坚持我所知道的规则,即用字母和数字组成名字,用一个字母作为第一个字符,一切都会好的.现在,下标零显然是一个"数字".所以我的印象是错的.
我知道我应该避免使用特殊字符.然而,上面的函数定义(指数衰减)在我看来是完全合理的 - 因为它永远不会改变,并且它如此优雅地传达了另一个程序员使用它所需的所有信息.
因此,我的问题是,哪些字符是允许的,哪些不是?在哪里?
编辑
好吧我似乎不够清楚.我使用python3,因此不需要声明源文件的编码.显然我从那时起就认为我的中文函数定义有效.
我的问题是为什么有些角色被允许存在,而有些角色则没有. 下标零引发错误,标识符中的无效字符,但黑板粗体零工作.两个同样特别的我会说.
我想知道是否有任何一般规则不仅适用于我的情况,必须有.看来我的错误不是偶然的.
编辑2:
该答案博马丁内斯的礼貌,指着我的语言参考,我应该在第一时间看过:
http://www.dcl.hpi.uni-potsdam.de/home/loewis/table-3131.html 看来允许的字符全部被选中.
我有一个configure
编写Makefile(来自Makefile.in
)的脚本.该clean
目标目前去除makefile文件中创建的一切,但它不会删除生成文件本身.(我可能不会使用Autotools)
因此我的问题是:makefile是否也会自行删除,需要开发人员./configure
再次运行?
一方面,我希望清理目标正确清理源树.但是,另一方面,我希望能够make clean test
在提交之前输入以检查一切是否正常工作; 再次运行配置脚本似乎有些奇怪.