对于概念,最重要的编程语言是什么?

时间:2009-05-26 06:32:58

标签: programming-languages

在您看来,程序员最重要的语言是什么?我说的是概念,而不是语言的实用程度。

列出语言和原因。例如,用于函数式编程的Lisp,用于基于原型的OOP的JavaScript等等。

25 个答案:

答案 0 :(得分:48)

必须知道

1)C(系统编程,了解机器架构)

2)Perl或Python或Ruby(实际的日常任务)

3)Java或C#或C ++(OOP,这些天找工作非常重要)

非常重要:

1)Haskell或ML(函数式编程;改变你的想法)

2)Lisp或Scheme(宏的力量)

好的附加内容:

1)Forth(非常低级,显式堆栈操作+编写自己的解释器的快乐)

2)汇编语言(了解CPU的工作原理)

3)Erlang(并行处理)

4)Prolog(逻辑编程)

5)Smalltalk(真正的OOP和真正的交互式开发)

答案 1 :(得分:29)

  • 汇编语言,你可以从低级知识中学到很多筹码。
  • C 了解更多关于低级别工作的实用知识,因为几乎所有语言都是用C语言实现的。
  • C ++ 用于面向对象编程,基于C的低级优点。
  • Pascal 了解如何使用强类型。
  • Java ,了解如何保护自己免受低级别问题的影响。
  • Perl 学习正则表达式,弱/动态类型和其他好东西。
  • Python ,可以看到强/动态/鸭子打字。
  • Ruby ,了解面向对象如何在Perl-esque弱/动态类型之上工作。
  • Common Lisp ,用于该功能性启示。
  • Scheme 强调递归。
  • Emacs Lisp ,因此您可以扩展Emacs。
  • Haskell 看到正确的函数式编程。
  • APL 让您了解如何编写代码。
  • COBOL ,因此您可以疯狂地维护遗留代码。
  • Erlang 真正了解并发性。 (感谢Pete Kirkham纠正我。)
  • Scala ,用于JVM上的函数编程。
  • Clojure ,用于JVM上类似Lisp的函数式语言。
  • Prolog 了解逻辑编程。
  • D 所以你可以看到为什么所有D狂热分子总是如此亲D。
  • C#,因此您可以为.NET(和Mono)编程。
  • F#,因此您可以在.NET上进行函数式编程。
  • Forth 用于基于堆栈的语言。
  • PHP ,因此您可以看到如何创建语言。 (开个玩笑。学习PHP,因为它对Web开发非常有用。)
  • JavaScript ,因为它基本上是客户端网页脚本的 语言。
  • bash 是一种优秀的通用脚本语言。
  • Visual Basic ,这样您就可以阅读老板写的代码了。 =)
  • INTERCAL 表示“有趣。”
  • brainfuck 所以你可以折磨你的朋友。
  • LOLCODE 这样你就可以说服他们在你受到脑力劳动之后仍然是你的朋友。

......等等。

答案 2 :(得分:10)

用于理解大多数其他语言(实现)和操作系统的实现方式

答案 3 :(得分:6)

我认为最能将编程概念的实用性和覆盖范围结合起来的三种语言将是

  • C
  • 的Python
  • 的Javascript

从这些语言中,您可以学习低级系统编程,指针和内存管理,静态类型,动态类型,高级脚本,事件驱动编程,面向对象编程,函数式编程。

显然你不会像使用Haskell那样获得函数式编程的简介,但是你可以在Python和(特别是)Javascript中学到很多概念。

答案 4 :(得分:5)

这不是语言,而是你应该知道的范例:

  • 程序性(如C,Pascal)
  • 面向对象(如Java,C ++,Smalltalk)
  • 功能性(如Lisp,ML,Scala)

如果您在一种语言中理解这些范例之一,则可以轻松地在同一范例中学习另一种语言。还有更多领域需要特别支持的语言才能理解:

  • 并行(在Erlang或Scala中)
  • 声明性模板(例如在C ++或Prolog中)
  • 动态语言(例如JavaScript)

最后你应该总是知道引擎盖下发生了什么,所以你最好看一下汇编程序。

答案 5 :(得分:3)

我会说:

  • C或汇编程序,以了解处理器的工作原理。
  • Smalltalk(或C#,Java,Python,Ruby等),以理解面向对象的编程。
  • Lisp(任何Lisp,Scheme,Common Lisp,Clojure),用于理解高级编程,元编程(宏)等。
  • Haskell理解类型推断和其他功能概念。

如果您使用的是分布式系统,我也会考虑学习Erlang。这些是我推荐学习的语言,即使只是肤浅的,只是为了学习,即使你从未使用它们来编写真正的应用程序。

答案 6 :(得分:3)

最好知道各种各样的。这使您可以更好地了解编程艺术,并且可以选择最适合工作的工具。

我目前的名单是: -

  • C - 靠近机器编程。
  • Python - 程序员必杀技。
  • Perl - 适用于什么时候发生。
  • Java - 因为它会让你继续工作。
  • C# - 因为它会让你继续工作。
  • lisp,scheme或其他功能可以让你的大脑摆脱困境。
  • SQL - 用于管理大型数据集。
  • JCL,COBOL,VAX DCL,CShell VB - 只是为了提醒你有多糟糕!

答案 7 :(得分:2)

好的短名单

  1. C代表机器概念
  2. Haskell用于函数式编程
  3. 用于面向对象编程的Smalltalk(或者Ruby或Simula-67)
  4. 逻辑编程的Prolog
  5. 回溯和令人兴奋的字符串处理的图标
  6. 用于Unix脚本编写的Bourne shell
  7. 可能还包括

    1. 宏的方案
    2. Awk或Perl或......用于正则表达式
    3. FORTH for tiny bootstrapping postfix精彩: - )

答案 8 :(得分:1)

对于概念,我会选择汇编程序和Java。

第一个因为你应该详细了解机器的工作原理。

第二个因为你应该了解如何保护自己免受机器工作方式的私密细节:-)。我的意思是一种语言,手头有丰富的数据结构(所以Java可能是Python,C ++和Boost等等。)

答案 9 :(得分:1)

这是一个很好的问题。我知道很多人,包括我自己,陷入困境,我们只是在制作代码,就像在麦当劳那里制作汉堡一样。编码变得过于机械 - 我们理解如何完成工作,但有时我们会忘记为什么这些事情会在幕后完成。

在我的世界中,C ++ / C / ObjectiveC最能教会我,即使我每天都在写C#。

在大多数情况下,学习C ++帮助我学习了内存管理以及各种对象如何存储在内存中等等 - 实际的编程科学。真正让我眼前一亮的是Standford提供的Programming Paradigms课程,你可以从iTunes中获取,我认为是YouTube。

答案 10 :(得分:1)

好。我会说学习C和javascript。它们是使用最广泛的语言。

您可能想学习Java /某些.Net语言和/或python / ruby​​:它们更方便,等等。

这样做的好处是所有这些语言都设计得相当好。 例如,不要学习PHP或C ++,因为它们很乱。它们被广泛使用,你可能希望有一天能够学习它们,但它们可能会让你的思绪变得严重。

答案 11 :(得分:1)

Limbo - 一种具有并发性和通道的编程语言,C应该演变成什么。 (另见D,另一个C继任者)

似乎没有其他人提到任何声明性语言,所以这里有几个:

Prolog - 逻辑编程的声明性语言

Modelica - 用于建模系统的声明性OO语言。

XSLT - 用于转换XML的声明性语言。

对于并行性,你不会比shader language以及相关的OpenCL - 通常在高端桌面上并行处理512个处理器,而不是并行的Erlang 4处理器(尽管有很多预定的过程。)

答案 12 :(得分:0)

这可能听起来很疯狂,但我首先学会了为Windows编写VBScript宏的程序。我使用了一个模板,这里有http://vbscript-macro-template.blogspot.com/,我刚刚添加了它,并尝试了解它所做的一切。现在,几年后我正在编写自己的桌面和数据库应用程序。

答案 13 :(得分:0)

C - 低级系统编程以及了解有关如何处理内存,堆栈,堆栈帧,堆等的一般概念。这些有助于理解更高级别的语言

C ++ - 主要是std库(通用算法和容器的分离),模板,命名空间,但也是OO概念。模板元编程将为您提供完全不同的编写软件的视角,这是编译时执行与运行时执行。模板继承(静态与动态多态)。

Python - 动态类型系统,列表理解 - 函数式编程(?),开发人员无内存管理,缩进空间

Objective-C - 消息调度(可以调度到nil),动态类型系统(静态),后期绑定,OO概念

答案 14 :(得分:0)

到目前为止扫描了答案我很惊讶我没有看到任何提及动作。

我认为如果你学习了一些C / C ++,那么一些Java应该为你准备几乎所有不错的语言。 我更喜欢看到我的代码在行动中,我发现Actionscript 3(不是2或1)以及Flex(这是MXML)非常适合快速演示视觉概念。

所以C& Java有助于学习大多数语言的语法。 Actionscript 3(非常类似于java语法)& MXML能够以非常快速的方式直观地表达您的代码。

答案 15 :(得分:0)

我已经提到了很多但是我肯定会添加C ++(已经完成),原因如下:

C ++ 学习如何使用指针并获得有关它们的主要想法。

虽然有人讨论c ++是否仍然是“更好”的语言(一切都取决于你想要做什么),理解指针永远不会伤害,以防万一你确实需要它们。

答案 16 :(得分:0)

如果您想了解计算机和底层硬件, C 是最重要的单一语言,通常被称为lingua franca计算机。 Stackoverflow播客倾向于在least onceweek处覆盖此内容。

这方面似乎有足够的答案,所以我就把它留在那里。

答案 17 :(得分:0)

您应该了解脚本语言,以便更快地对应用程序进行原型设计。

也许是python / ruby​​ / perl。如果你是一个喜欢他的Java库的Java人,那么Groovy也是另一种选择。

答案 18 :(得分:0)

寻找一组不同的编程语言:

  • C ++ / C#/ Java等。
  • C / Assembler
  • Python,Ruby,Lua,Perl等。
  • sh,awk,sed,正则表达式
  • Prolog(或类似)
  • Haskell / Lisp等。

选择哪一个并不重要,但是你从每个“类别”中选择一个。

答案 19 :(得分:0)

我会坐在C / C ++上,因为它为世界各地使用的其他语言设置了基础知识。

就我个人而言,我学习了Java / JavaScript-> VB(幸运的是短期课程) - > C# - > C ++,其中包含了一小撮PHP和Perl。该系列的最佳部分是C#,然后在C ++中移动到幕后。

答案 20 :(得分:0)

Pascal或Basic用于启动和掌握程序编程的基础知识。

在学校,我们学习了Haskel的函数式编程。

然后应该尝试使用汇编程序或C来获取深度和Java for OOP。

A没有任何争论 - 这只是我的品味和我尝试过的。

答案 21 :(得分:0)

对于网络编程:PHP,ANSI-SQL,javascript。

有些人可能会说HTML和CSS不是编程语言。但它们对于Web应用程序开发至关重要。


对于桌面应用程序开发,使用Qt Framework的C ++。 Qt为C ++提供了额外的“跨平台”嘶嘶声。

答案 22 :(得分:0)

用于读/写文档的伪代码。 :P

我认为了解C / C ++或任何其他低级语言将有助于您了解托管/脚本语言的工作方式有何帮助。如指针将揭开变量引用的神秘面纱。

答案 23 :(得分:0)

你已经提到了两个,这里还有一些:

  • Java:Java是OOP的一个很好的例子,因为你必须使用oop,而且它是从头开始设计的,是一种OOP语言。
  • BASIC:虽然已经过时,但它是程序语言的一个很好的例子,它的语法非常简单。

答案 24 :(得分:-1)

你应该从C开始并通过C ++,Java和goto WinForms, 然后更好地转到.NET