标签: programming-languages

FP和OO正交吗?

我一次又一次地听到,我正在努力理解并验证FP和OO是正交的想法.

首先,2个概念的正交意味着什么?

FP尽可能地鼓励不变性和纯度,而OO似乎是为状态和变异而构建的 - 一个有点组织的命令式编程版本?我意识到对象可以是不可变的,但OO似乎意味着状态/改变我.

它们看起来像是对立的.这对他们的正交性有何影响?

像Scala这样的语言可以很容易地执行OO和FP,这是否会影响这两种方法的正交性?

oop paradigms programming-languages functional-programming scala

74
推荐指数
7
解决办法
7640
查看次数

什么是常规语言?

我试图理解语言级别的概念(常规,上下文无关,上下文敏感等).

我可以很容易地看清楚这一点,但我发现的所有解释都是一堆符号并谈论集合.我有两个问题:

  1. 你能用语言描述常用语言是什么,以及语言有何不同?

  2. 人们在哪里学会理解这些东西?据我了解,这是正式的数学?我在大学有几个课程使用它,几乎没有人理解它作为导师只是假设我们知道它.我在哪里可以学到它以及为什么人们"期望"在如此多的资源中知道它?就像教育方面存在差距一样.

这是一个例子:

属于该集合的任何语言都是字母表中的常规语言.

语言怎么能"超过"任何东西?

syntax programming-languages bnf regular-language formal-languages

74
推荐指数
2
解决办法
4万
查看次数

在微小内存中运行的可用交互式语言有哪些?

我正在寻找通用编程语言

  • 有一个交互式(实时编码)提示
  • 当编译器托管在单独的机器上时,单独工作32 KB RAM或8 KB工作
  • 在总共只有8-32 KB RAM的微控制器上运行(没有MMU).

到目前为止,下面是我的清单,我错过了什么?

  • Python:PyMite VM需要64K闪存,8K RAM.目标LPC,SAM7和ATmegas 8K或更多.托管.
  • Lua:eLua FAQ推荐256K闪存,64K RAM.
  • FORTH:amforth在ATmega上需要8K闪存,150字节RAM,30字节EEPROM.
  • 方案:armpit方案最小的目标是具有32K闪存,4K SRAM的LPC2103.
  • C:Interactive C在68HC11上运行,没有闪存和32K SRAM.托管.
  • C:picoc是一个开源,交叉编译,交互式C系统.编译为AVR时,需要63K闪存,8K RAM.可以通过努力将RAM保持在闪存中来减少RAM.
  • C++:AngelScript是一个开源的,基于字节码的,类似于C/C++的脚本语言,具有简单的本机调用.
  • Tcl:TinyTCL在DOS上运行,60K二进制.看起来很容易移植.
  • BASIC:TinyBasic:初始化为64K堆,可能是可调整的.
  • 口齿不清
  • PostScript :(我还没有找到低内存的FOSS实现)
  • Shell:bitlash:Arduino(ATmega)的交互式命令shell.另见AVRSH.

embedded microcontroller programming-languages interactive

72
推荐指数
6
解决办法
2万
查看次数

C#语言名称的来源

我是C和C++程序员,现在正在尝试学习C#.我已经购买了Wrox出版物的专业C#一书.

在从C迁移到C++时,我怀疑为什么++被添加到C.后来我意识到,因为++是一个增量运算符,它被添加到C只是为了提供一个"面向对象的扩展".

在C#中,有什么意义#

c# history programming-languages

72
推荐指数
4
解决办法
3万
查看次数

为什么你决定使用Erlang"反对"?

你真的"试过"(意味着编程,而不只是阅读一篇文章)Erlang并决定反对它的项目?如果是这样,为什么?此外,如果您选择回到旧语言,或使用其他功能语言,如F#,Haskell,Clojure,Scala或其他类似的东西,那么这也很重要,并说明原因.

erlang programming-languages functional-programming

72
推荐指数
10
解决办法
4万
查看次数

面向对象编程的替代方案?

OOP可能是当今软件设计中使用最多的编程范例.我的问题是 - 其他范例可以与之竞争并且可以代替oop?为了澄清这个问题,我不是在询问其他范例是什么.其中有很多,我想知道哪一个:

  • 已经在实践中使用,不仅在理论上.
  • 可以与oop竞争,因此它可以在没有或最少痛苦的大型项目中使用.
  • 可用于开发具有业务逻辑,数据库等的桌面应用程序.
  • 不与oop的伴侣一起使用,但可以替换oop.

如果有的话,它的优缺点是什么,为什么它比oop更好/更差,最好用什么语言,在流行的语言中使用它,有任何设计模式,还可以完全取代oop?

language-agnostic oop paradigms programming-languages

72
推荐指数
3
解决办法
2万
查看次数

向非程序员展示解释什么编程"看起来像"的好例子是什么?

我的一个朋友前几天问我,如果我在编程时只是查看数字列表,或者它是如何工作的.我试着解释一下,它通常更像是数学公式,奇怪的英语单词被抛入,并且它通常大部分都是可读的.但这是一个非常模糊的解释,并没有真正解释给非程序员.

但它让我思考什么会成为一个好榜样.不是因为我想教她的编程或任何东西,而只是让她知道什么程序代码"看起来像".

这让我想知道实际上会有什么作为一个好例子.事实证明这非常困难.

我的第一个想法显然是一个简单的"Hello World"计划.但它确实没有显示任何有用的东西.它并没有真正展示我们如何使用函数或变量,或控制流程结构,if或者while使程序实际执行某些操作.这没有逻辑.该程序对任何事情都没有反应.

所以像计算素数这样的东西可能是一个更好的例子.但话又说回来,这可能过于理论化和不切实际......(这有什么用呢?它与编写"真实"程序有什么关系?)而且,其中没有重要的控制流逻辑.这只是一个直接的数学序列.

还有,应该使用哪种语言?

理想情况下,我不认为它必须是一种非常"干净"的语言.但相反,它应该可以使结构清晰.如果它这样做,那么一定量的噪音和杂乱可能没问题.也许像C++这样的东西实际上是比Python更好的例子.显式花括号和类型说明符是明显的"钩子",可以帮助解释程序的结构,或者强调它不仅仅是简单的语句,几乎可以读作英语.

但是使用C++,我们也会遇到一些彻头彻尾的奇怪语法.为什么std::cout << x习惯打印x?为什么不用"普通"函数调用语法?并printf没有更好的,它具有神秘的格式字符串,并且缺乏可扩展性(我是否想通过使用char*字符串使程序复杂化?或者我是否使用std::string并解决这个看似不必要s.c_str()的字符串可以打印出来的字符串?printf

也许更高层次的语言会更好.但是哪一个?为什么?

我知道这里有很多类似的问题,用于教授编程的语言/示例程序.但我认为这里的要求是不同的.在教授编程时,我们比任何事情都更简单.我们希望避免任何尚未教授的内容.我们希望确保学生能够理解屏幕上的所有内容.

我对简单本身并不感兴趣.而是给"外人"一个"程序看起来像什么"的想法.程序并不简单.但他们普遍表现出一定的结构和方法可以解决这一难题.哪种语言/程序最能突出?

编辑
感谢您到目前为止的所有建议.你们中的一些人对它的看法与我想要的有些不同.

也许一个例子是有序的.我无法驾驶飞机,但我已经基本了解驾驶舱的样子,以及驾驶员在飞行时"做什么".

而且我不是一个训练有素的木匠,但是当我看到一个时,我知道一把锯子或一把锤子.

但是当你看到与电影中的编程有关时,它通常只是充满垃圾的屏幕(如矩阵中的绿色文本).它看起来不像普通人类实际上可以做的事情.它没有什么可辨认的.不是程序员的人只是认为这是黑魔法.

我不想教她飞行,也不想编程软件.但我想给她一个基本的参考框架.只是一个想法"啊,这就是你正在使用的东西.所以它不仅仅是屏幕上的随机符号和数字".if与矩阵式随机符号和数字相比,即使只显示一个简单的陈述也是一种启示.

你们有些人建议解释一个算法,或使用伪代码,但这就是我想要避免的.我想要的东西只是简单地显示实际的代码是什么样的,就像你不必是一个木匠来看一看锯,并基本了解它是什么以及它是如何工作的.

当我还是个孩子的时候,我们曾经去过意大利度假.在下来的路上,飞行员让我进入飞机的驾驶舱.当然,我没有学习如何驾驶飞机.但我确实看到了飞行员的世界.我知道他们如何让飞机走了,飞行员实际上做了什么.

这就是我想做的一切.我的朋友没有兴趣学习编程,我也不想强迫她理解源代码.但她很好奇我与哪种工具或实体合作.矩阵式符号是否在屏幕上滚动?纯数学?散文形式的英语?

我有兴趣传达的是对"工作时的样子"的高层次理解.

programming-languages

71
推荐指数
16
解决办法
2万
查看次数

可以使用哪些编程语言在Android中开发?

可能重复:
我可以在Android Dalvik上使用哪些编程语言?

大多数情况下,Android应用程序是用Java编写的.但我听说它也可以使用Scala或其他语言.我还读到可以包含本机C/C++代码.

是否有可用的参考/列表显示可以使用哪种语言?

java scripting android programming-languages scala

70
推荐指数
3
解决办法
11万
查看次数

在提到编程语言时,"表达"意味着什么?

我在"javascript是一种非常富有表现力的语言"这样的句子中经常听到这个词.它只是意味着没有很多规则,或者"表达"是否具有更具体的含义?

programming-languages

68
推荐指数
4
解决办法
2万
查看次数

什么是"真正的"编程语言?

最近一位老师说"PHP不是一种真正的编程语言",但在我看来,这只是一个弱的理由:

  • 它没有编译.
  • 它是脚本化的.
  • 它不会在每个平台上运行.

PHP不被视为"真正的"编程语言吗?什么是"真正的"编程语言?编译语言是否必须认真对待?

背景

两天前,我在学校的A-Level计算课上做过入门课程 - 我们在课程的第一年使用Java.我不熟悉Java,但对常规编程基础(变量,函数,面向对象,循环等)有很好的把握.

我们的第一项任务是老师快速地跑得很快.她没有费心去解释任何概念,它们是如何工作的,或者你将如何实际使用它们,并且看起来非常高兴看到大多数学生(总的来说,他们是编程新手)在他们的座位上没有最简单的想法,她在谈论什么.事后看来,我认为她很快就能看到谁可以真正"处理"计算A-Level,因为学生仍有机会在九月开始之前改变他们的科目.

第一个也是唯一的任务是编写一个Java命令行应用程序来将二进制转换为denary(十进制).我们进行了两个小时的品尝会议,在解释了二元系统是如何工作的之后我们必须开始,尽管总的来说,没有人真正有一个最模糊的想法从哪里开始.一个小时后,有些人比其他人更进一步,但没有人真正取得任何重大成就.老师自己变得很困惑,她从隔壁叫另一位老师.他来帮助人们,看看下一步该去哪儿.

没有吹牛,我可能确实在课堂上有最丰富的经验,并且在练习中得到了最大的成功.他问我以前是否有过任何经历; 我说是的,尤其是在PHP中,并且开玩笑地评论说我可以在几行PHP中编写一些将二进制文件转换为denary的东西,而Java应用程序正迅速发展成几个代码屏幕.

他回答说,"PHP不是一种真正的编程语言!"......!经过一番讨论,他给出了上述三个原因.但是,我指出你可以在任何运行Apache的平台上运行PHP,但我不认为他真的知道Apache是​​什么,并且没有那个!

php programming-languages terminology

68
推荐指数
7
解决办法
4万
查看次数