小编Muh*_*uri的帖子

为什么脚本语言(例如 Perl、Python、Ruby)不适合作为 shell 语言?

bashzshfish等 shell 语言与上述脚本语言之间有什么区别,使它们更适合 shell?

使用命令行时,shell 语言似乎要容易得多。对我来说,使用 bash 比在 ipython 中使用 shell 配置文件要顺畅得多,尽管有相反的报道。我认为大多数人都会同意我的观点,Python 中的大部分中型到大型编程比 bash 更容易。我使用 Python 作为我最熟悉的语言,Perl 和 Ruby 也是如此。

我试图阐明原因,但除了假设两者中对字符串的不同处理与此有关之外,我无法阐明原因。

这个问题的原因是我希望开发一种在两者中都可用的语言。如果你知道这种语言,也请张贴。

正如 S.Lott 所解释的,这个问题需要澄清一下。我在询问 shell语言的特性与脚本语言的特性。所以比较不是关于各种交互式(REPL)环境的特性,例如历史和命令行替换。该问题的另一种表达方式是:

一种适用于复杂系统设计的编程语言能否同时表达有用的单行代码,可以访问文件系统或控制作业?一种编程语言可以有效地扩展和缩减吗?

ruby python bash shell perl

341
推荐指数
9
解决办法
7万
查看次数

为什么在Python中使用抽象基类?

因为我习惯于在Python中使用旧的鸭子打字方式,所以我无法理解对ABC(抽象基类)的需求.的帮助下是如何使用它们好.

我试图在PEP中阅读理由,但它超越了我的脑海.如果我正在寻找一个可变序列容器,我会检查__setitem__,或者更有可能尝试使用它(EAFP).我没有遇到数字模块的实际用途,它确实使用了ABC,但这是我必须理解的最接近的数字模块.

有人能解释一下我的理由吗?

python abstract-class abc

192
推荐指数
5
解决办法
6万
查看次数

Python总和,为什么不是字符串?

Python有一个内置函数sum,它实际上相当于:

def sum2(iterable, start=0):
    return start + reduce(operator.add, iterable)
Run Code Online (Sandbox Code Playgroud)

除了字符串之外的所有类型的参数.它适用于数字和列表,例如:

 sum([1,2,3], 0) = sum2([1,2,3],0) = 6    #Note: 0 is the default value for start, but I include it for clarity
 sum({888:1}, 0) = sum2({888:1},0) = 888
Run Code Online (Sandbox Code Playgroud)

为什么特别遗漏了字符串?

 sum( ['foo','bar'], '') # TypeError: sum() can't sum strings [use ''.join(seq) instead]
 sum2(['foo','bar'], '') = 'foobar'
Run Code Online (Sandbox Code Playgroud)

我似乎记得在Python列表中讨论的原因,所以解释或解释它的线程的链接会很好.

编辑:我知道标准的方法是做"".join.我的问题是为什么禁止对字符串使用sum的选项,并且没有禁止,例如,列表.

编辑2:虽然我认为这不是必需的,但我得到了所有的好答案,问题是:为什么sum在包含数字的迭代或包含列表的迭代但不包含包含字符串的迭代?

python types sum built-in

61
推荐指数
6
解决办法
3万
查看次数

Lisp和Erlang Atoms,Ruby和Scheme符​​号.它们有用吗?

在编程语言中使用原子数据类型的功能有多大用处?

一些编程语言具有原子或符号的概念来表示各种常量.我遇到的语言(Lisp,Ruby和Erlang)之间存在一些差异,但在我看来,一般概念是相同的.我对编程语言设计很感兴趣,我想知道原子类型在现实生活中提供了什么价值.其他语言如Python,Java,C#似乎在没有它的情况下做得很好.

我没有Lisp或Ruby的实际经验(我知道语法,但在实际项目中没有使用过).我已经使用Erlang足以用于那里的概念.

ruby lisp erlang scheme

61
推荐指数
6
解决办法
9699
查看次数

纯函数式编程上下文中的面向对象编程?

在函数式编程(FP)上下文中使用面向对象编程(OOP)有什么好处吗?

我一直在使用F#已经有一段时间了,我注意到我的函数越多,无状态,我就越不需要将它们作为对象的方法.特别是,依靠类型推断使它们在尽可能多的情况下可用是有利的.

这并不排除需要某种形式的名称空间,这与OOP正交.也不鼓励使用数据结构.实际上,FP语言的实际使用在很大程度上依赖于数据结构.如果你看一下F Sharp Programming/Advanced Data Structures中实现的F#堆栈,你会发现它不是面向对象的.

在我看来,OOP与使用对象状态的方法主要是为了改变对象有很大的联系.在纯FP环境中,不需要也不需要.

一个实际的原因可能是能够与OOP代码交互,就像F#与.NET一样.除此之外,有什么理由吗?Haskell世界的经验是什么,编程是更纯粹的FP?

我将非常感谢有关该问题的论文或反事实现实世界的例子.

oop f# haskell functional-programming scala

42
推荐指数
3
解决办法
3788
查看次数

F#vs IronPython:什么时候优先选择另一个?

虽然F#和IronPython语言在技术上不同,但我认为它们的潜在用途之间存在很大的重叠.什么时候比另一个更适用?

到目前为止,我认为F#在计算上更有效率,而IronPython从Python继承了更好的库.我很高兴得到纠正.

有一个相关的问题是F#to IronPython/IronRuby,因为C#是VB.NET的?但大多数答案都是关于语言范式而不是它们的实际适用性.

编辑:我想我应该添加更多背景.我一般都对Python有很好的经验,并且刚刚在一些犹豫不决的函数编程步骤之后学习了F#,主要是在Erlang中.我目前觉得能够继续使用Python或F#.我想决定我应该使用哪一个以及在哪里.例如:

  1. Python作为标准库的一部分具有非常好的数据结构.前几天我需要一个相当于Python的heap模块,它在标准的F#/ .net库中不可用.指向IronPython.
  2. F#可用于构建更方便的库,更易于从其他.Net语言访问.所以对于.Net驻留库我更喜欢F#.
  3. 跨平台开发.IronPython在这里更好.F#/ Mono可用是一个小得多的平台集,F#/ OCaml兼容性不易维护,特别是在库方面.
  4. IronPython交互式shell在我看来比fsi更容易.因人而异.

因此,问题归结为:除了偏好一种范式而不是另一种或某些团队或公司偏好之外,还有什么理由可以让你选择F#而不是IronPython,反之亦然?假设你对两者都有同样的信心?或者它们是否完全等同于所有实际目的?

编辑:好的,看起来你认为这是一个愚蠢的问题,低估它答案.但至少它是诚实的.所以请提示一下.是不是可以区分这两者,还是我通过提出这个问题进入一些秘密禁忌?如果它看起来像一个巨魔可以有人请通知我?

.net python f# ironpython

33
推荐指数
2
解决办法
8937
查看次数

Python 3,easy_install,pip和pypi

关于Python 3.x,easy_install,pip和存储库(pypi.python.org)的当前状态是什么?

是否有easy_install和/或pip版本可以从那里安装正确版本的软件包?否则,他们很快会被期待吗?

python python-3.x

33
推荐指数
1
解决办法
5万
查看次数

如何在F#中学习GUI编程

这些天我有兴趣学习F#,并希望将它用于GUI应用程序.不幸的是,我以前没有.Net或C#的背景知识.有没有好的资源(网站,书籍)来学习这个,而不是先通过C#?

提前谢谢了.

.net user-interface f#

20
推荐指数
3
解决办法
1万
查看次数

真正的path.py请站起来吗?

有一个很好的模块,path.py由Jason Orendorff编写.如果我没记错的话,有一些关于将它添加到标准库的讨论然后它就消失了.

现在看起来原始的有多个产物.我能找到到目前为止unipath,看起来像一个分叉path.py,一个又一个,并根据PyPI中几个人.

任何人都有这些选择的经验吗?在功能,维护或任何其他标准方面,哪一个比另一个好?或者我应该随机选择一个?

(对于异想天开的标题道歉.我首先选择了"哪个path.py?"但是它的篇幅太短了.)

python module path

19
推荐指数
1
解决办法
3385
查看次数

有没有办法在没有Visual Studio的情况下安装F#3.0?

我希望升级到F#3.0,但我在微软网站上找不到打包的F#3.0编译器,也没有使用快速版本.是否可以从命令行或简单的IDE安装F#3.0,如果可以,如何安装?

f# f#-3.0

18
推荐指数
2
解决办法
5931
查看次数