小编Ste*_*zzo的帖子

通过学习Ruby,Python程序员将获得什么?

我将在大学学习Ruby,HaskellProlog.现在,我想知道什么应该得到我的大部分注意力.我有半年的时间来做这三个,这意味着我需要决定一种语言来获得我的课外时间.其他我将学到的就是在课程中做得非常好.

我对Haskell和Prolog很熟悉,知道学习它们会教会我一些非常重要的计算机科学概念.我不太确定红宝石.

通过一些教程和介绍,我得到的印象是红宝石有很多浅薄的魔力.现在我问红宝石人:在我花了半年的时间学习它之后,我决定再也不用它了,我会得到什么,Python还没教过我.

这个问题并非旨在为红宝石"提出理由",尽管我意识到这是一个很有争议的潜在话题.

我现在使用Python进行所有CS工作.我也用它做了很多函数式编程.我也已经非常熟悉面向对象编程(在Java,Python和C#中).正如我所说,我会用Prolog做一些逻辑编程.

然后留给Ruby教我什么?

进一步淡化问题:

  • 我对编写有趣的程序或酷的Web应用程序不感兴趣.我只对计算机科学课感兴趣.实现算法,数据结构等.(虽然玩得开心肯定不会受伤)

  • 理想情况下,所讨论的概念需要在大约1.000小时内可以学习.

  • 我对Rails一点也不感兴趣.在这种情况下,任何隐藏复杂性的技术都是有害的.

我无法帮助这个问题具有争议性.但是这个问题的理想答案将提到一个非常重要的理论计算机科学概念,红宝石帮助程序员使用和理解,以获得科学的辅助知识.

我想到的候选人是元编程和多线程.我不知道红宝石是否特别适合学习其中任何一种.

ruby computer-science

16
推荐指数
3
解决办法
1920
查看次数

对于实现功能语言的虚拟机,有哪些明显的优化?

我正在研究一种中间语言和一个虚拟机来运行具有一些"有问题"属性的函数式语言:

  • 词法命名空间(闭包)
  • 动态增长的调用堆栈
  • 慢整数类型(bignums)

中间语言是基于堆栈的,具有当前命名空间的简单哈希表.只是让你了解它的外观,这是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

11
推荐指数
2
解决办法
721
查看次数

用于将纯文本(ASCII)转换为GSM 7位字符集的Python库?

是否有一个python库用于将ascii数据编码为7位GSM字符集(用于发送SMS)?

python sms encoding

8
推荐指数
1
解决办法
9393
查看次数

如何在Glade3中将子项添加到StatusBar?

在GTK2中,StatusBar只是一个像HBox这样的简单容器.当我尝试将子窗口小部件添加到状态栏时,Glade 3(gtk3)现在显示此消息:

Status Bar类型的小部件需要占位符才能添加子级.

什么是占位符?

我更喜欢在Glade中完全构建UI,但是如果它不再起作用,那么在代码中构建它也很好.我通过GObject内省使用Python 3.2和Gtk.

gtk glade python-3.x

8
推荐指数
1
解决办法
2728
查看次数

一些utf8字符允许在python源中,有些则不允许

我注意到我不能在我的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 看来允许的字符全部被选中.

unicode python-3.x

7
推荐指数
1
解决办法
2380
查看次数

Makefile是否应该在'make clean'上删除自己?

我有一个configure编写Makefile(来自Makefile.in)的脚本.该clean目标目前去除makefile文件中创建的一切,但它不会删除生成文件本身.(我可能不会使用Autotools)

因此我的问题是:makefile是否也会自行删除,需要开发人员./configure再次运行?

一方面,我希望清理目标正确清理源树.但是,另一方面,我希望能够make clean test在提交之前输入以检查一切是否正常工作; 再次运行配置脚本似乎有些奇怪.

posix makefile configure

2
推荐指数
1
解决办法
1737
查看次数