bash、zsh、fish等 shell 语言与上述脚本语言之间有什么区别,使它们更适合 shell?
使用命令行时,shell 语言似乎要容易得多。对我来说,使用 bash 比在 ipython 中使用 shell 配置文件要顺畅得多,尽管有相反的报道。我认为大多数人都会同意我的观点,Python 中的大部分中型到大型编程比 bash 更容易。我使用 Python 作为我最熟悉的语言,Perl 和 Ruby 也是如此。
我试图阐明原因,但除了假设两者中对字符串的不同处理与此有关之外,我无法阐明原因。
这个问题的原因是我希望开发一种在两者中都可用的语言。如果你知道这种语言,也请张贴。
正如 S.Lott 所解释的,这个问题需要澄清一下。我在询问 shell语言的特性与脚本语言的特性。所以比较不是关于各种交互式(REPL)环境的特性,例如历史和命令行替换。该问题的另一种表达方式是:
一种适用于复杂系统设计的编程语言能否同时表达有用的单行代码,可以访问文件系统或控制作业?一种编程语言可以有效地扩展和缩减吗?
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在包含数字的迭代或包含列表的迭代但不包含包含字符串的迭代?
在编程语言中使用原子数据类型的功能有多大用处?
一些编程语言具有原子或符号的概念来表示各种常量.我遇到的语言(Lisp,Ruby和Erlang)之间存在一些差异,但在我看来,一般概念是相同的.我对编程语言设计很感兴趣,我想知道原子类型在现实生活中提供了什么价值.其他语言如Python,Java,C#似乎在没有它的情况下做得很好.
我没有Lisp或Ruby的实际经验(我知道语法,但在实际项目中没有使用过).我已经使用Erlang足以用于那里的概念.
在函数式编程(FP)上下文中使用面向对象编程(OOP)有什么好处吗?
我一直在使用F#已经有一段时间了,我注意到我的函数越多,无状态,我就越不需要将它们作为对象的方法.特别是,依靠类型推断使它们在尽可能多的情况下可用是有利的.
这并不排除需要某种形式的名称空间,这与OOP正交.也不鼓励使用数据结构.实际上,FP语言的实际使用在很大程度上依赖于数据结构.如果你看一下F Sharp Programming/Advanced Data Structures中实现的F#堆栈,你会发现它不是面向对象的.
在我看来,OOP与使用对象状态的方法主要是为了改变对象有很大的联系.在纯FP环境中,不需要也不需要.
一个实际的原因可能是能够与OOP代码交互,就像F#与.NET一样.除此之外,有什么理由吗?Haskell世界的经验是什么,编程是更纯粹的FP?
我将非常感谢有关该问题的论文或反事实现实世界的例子.
虽然F#和IronPython语言在技术上不同,但我认为它们的潜在用途之间存在很大的重叠.什么时候比另一个更适用?
到目前为止,我认为F#在计算上更有效率,而IronPython从Python继承了更好的库.我很高兴得到纠正.
有一个相关的问题是F#to IronPython/IronRuby,因为C#是VB.NET的?但大多数答案都是关于语言范式而不是它们的实际适用性.
编辑:我想我应该添加更多背景.我一般都对Python有很好的经验,并且刚刚在一些犹豫不决的函数编程步骤之后学习了F#,主要是在Erlang中.我目前觉得能够继续使用Python或F#.我想决定我应该使用哪一个以及在哪里.例如:
heap模块,它在标准的F#/ .net库中不可用.指向IronPython.因此,问题归结为:除了偏好一种范式而不是另一种或某些团队或公司偏好之外,还有什么理由可以让你选择F#而不是IronPython,反之亦然?假设你对两者都有同样的信心?或者它们是否完全等同于所有实际目的?
编辑:好的,看起来你认为这是一个愚蠢的问题,低估它和答案.但至少它是诚实的.所以请提示一下.是不是可以区分这两者,还是我通过提出这个问题进入一些秘密禁忌?如果它看起来像一个巨魔可以有人请通知我?
关于Python 3.x,easy_install,pip和存储库(pypi.python.org)的当前状态是什么?
是否有easy_install和/或pip版本可以从那里安装正确版本的软件包?否则,他们很快会被期待吗?
这些天我有兴趣学习F#,并希望将它用于GUI应用程序.不幸的是,我以前没有.Net或C#的背景知识.有没有好的资源(网站,书籍)来学习这个,而不是先通过C#?
提前谢谢了.
我希望升级到F#3.0,但我在微软网站上找不到打包的F#3.0编译器,也没有使用快速版本.是否可以从命令行或简单的IDE安装F#3.0,如果可以,如何安装?