C++程序员希望拓宽视野

siv*_*udh 19 c++ programming-languages

我已经编程了大约5年的C++,现在我意识到知道如何"以不同方式"思考的价值.

这个问题适用于尝试过其他编程语言的C++程序员,他们遇到过以下问题:

  • "喔..这太酷了!我不知道我可以像这样编程."
  • "哇,我从没想过设计问题可以这样解决!"

那么,哪种语言对你有用?我正在寻找最大的效果,所以我认为Java不符合要求.= p我对任何建议持开放态度!

免责声明:我问这个问题主要是因为我想扩大自己的想法.这里无意开始任何编程语言战争!

cdi*_*ins 41

我可能很自信,主要是C++程序员,因为我已经使用了它,所以你可能会发现我的经历很有趣.

按时间顺序,这里是我学到的语言和我的顿悟.我已经为我强调了重要的一些.当然,有许多不同的语言可以提供相同的见解,我只是分享我自己的个人经历.

  1. Atari Basic - 酷我可以让我的电脑几乎做任何事情,但我一直跑到我的8k内存限制(或者我用完了行号)!
  2. 徽标 - 没有行号.我可以逐步构建和运行我的程序(后来我在Lisp,Scheme和Forth中看到了这个)
  3. Pascal - 它就像Basic一样,但具有更多功能(并且没有行号).
  4. C - 这就是指针(现在我理解偷看和戳).
  5. 装配 - 啊,这就是为什么C的设计方式.我不妨用C而不是汇编.
  6. C++ - 对象是将程序结构化为逻辑块的好方法
  7. BASH - 使用流(过滤器,源和接收器)进行编程非常强大
  8. PostScript - 字体是程序!基于堆栈的编程是一种非常强大的范例.
  9. Prolog - 所以你可以写一堆约束,让计算机自己解决问题.但是,天哪,很难知道有什么限制让它做我想做的事!
  10. Perl - 如果人们不了解所有规则并不重要.我想有些语言的设计比阅读更容易.
  11. SQL - 查询数据的简便方法.它让我想起了Prolog.(后来它让我想起了函数式编程).
  12. Lisp - 所以你不需要手动内存管理来制作链表!(注意我没有在Lisp上花足够的时间.很多后来的课程都可以用它来学习.)
  13. Object Pascal - Cool,Pascal也可以有对象.
  14. Modula-2 - 奇怪,这看起来像Pascal.
  15. Simula-67 - 嗯......所以这就是面向对象语言的来源?
  16. Java - 一切都可以成为一个对象(我后来才知道更多的东西可以是对象,参见下面的Smalltalk),代码可以编译一次并在不同的平台上运行.我的其他顿悟是接口是构建软件的好方法,垃圾收集真的很强大.
  17. Delphi - 哇,GUI库可以很容易使用.事件是一个很棒的抽象.
  18. C++模板 - 在编译时编写代码非常强大(参见Scheme和Lisp).
  19. C++仿函数和绑定器 - 将函数传递给函数功能强大,但语法很糟糕.(这实际上是我对函数式编程的第一次真实体验,大多数语言显然做得更好).
  20. JavaScript - Prototypes和eval函数非常强大.
  21. XSLT - 我无法相信这是图灵的完整.这必须是学术界变坏的时候发生的事情.
  22. Eiffel - 合同是表达设计假设和要求的好方法.
  23. AspectJ - 横切关注点非常有意义,而且在其他OOPL中很难表达它们.但是通过函数的名称识别它们看起来像是一个黑客?
  24. Scala - 字段和方法是相同的.高阶函数可以很容易编写.编译器可以猜测简单表达式的类型(但不是模板).对象代码可以更简单.模式匹配很整洁,但我什么时候使用它们?特征和混合甚至比界面更好.
  25. C# - 这就像Delphi与C++和Scala混合使用.我可以在运行时反映一切,甚至可以轻松地发出代码.
  26. D - 这就是将单元测试与按合同设计和其他一些东西结合起来,同时保持C++心态的结果.
  27. Smalltalk - 没有真正学到它,但是Smalltalk程序员在这个时候向我指出,在Smalltalk中,一切都是一个对象(没有必要的装箱/拆箱),包括代码块.
  28. LINQ - SQL基本上只是函数式编程.
  29. Lua - 一切都可以成为一张桌子!听起来像JavaScript,但它更容易嵌入.
  30. ML - 当你只使用模式时,你可以编写很多简单的代码.
  31. Lambda演算 - 所以这就是Lisp和函数式编程的来源.
  32. Scheme - 在编译时生成代码非常简单.这很容易扩展.数字处理可以做得很好.保持状态的功能很强大.延续很整洁,但我不在乎.
  33. Frink - 我从未意识到测量单位可能如此复杂.
  34. 欢乐 - 这是我见过的最短的代码.这是那里评价最低的语言.
  35. 组合逻辑(SKI-Calculus) - 您不需要参数,但可以使用组合器.对Joy来说,Lambda-calculus是Lisp.
  36. Haskell - 我希望我可以编译我的代码.Haskell标准的前奏,必须是我见过的最优雅的库之一.
  37. 因素 - 那里有很多很酷的东西,我只是希望我能够学习语法.
  38. K - 基于数组(矢量)的基元操作非常强大.
  39. 第四 - 这就像一个超级动力的高级装配.但是要学到很多东西.
  40. Python - 这是非常易读的东西.它就像一堆其他语言的组合.
  41. Erlang - 将程序表达为actor是表达并行性的好方法.
  42. 可执行的UML - 异步消息传递是表达并发算法的好方法,无需考虑线程.
  43. Ruby - 构建系统(Rake)可以用真正的编程语言编写.代码块也可以是数据(技术上我通过Scala了解到).

所以当然这个列表比你(或任何其他人)想要的要长得多.为了达到最大效果,我的短名单将是:Scheme(或Lisp),Joy(或PostScript),Erlang,Eiffel,AspectJ,Erlang,ML和Haskell.如果你只想专注于几种语言,并且愿意深入研究它们,那么你可以从掌握Scala或C#中获得很多.当然可能还有一两件事你可以从C++ 0x中学习,特别是如果你推动并刺激它.


Ste*_*yle 15

Python给了我"如此酷"的反应


Eli*_*sky 12

对于真正不同的东西,请尝试Lisp或Scheme.

  • +1我同意.一旦我学会了Scheme,STL中的很多东西开始对我有意义.学习任何函数式语言肯定会让你成为更好的C++程序员. (2认同)

Joh*_*don 10

当然是Haskell,但实际上所有这些都改变了我的观点:

我小时候就开始在GWBasic工作,所以我很自然地倾向于程序语言.

我的职业生涯始于C++,这是我建立的基础.

  • JavaScript - 向我介绍了一流的函数,闭包,动态类型.
  • Python - 向我介绍了更简单的语法和动态语言.
  • SQL - 向我介绍了'是'与'做'的语言,代码'是'答案.
  • Lua - 极简主义并使用简单的数据结构(表)作为所有数据结构的基础.
  • C#是我的新面包和黄油......垃圾收集的优点,内置于库中等.
  • C - 我有力量!


ito*_*son 6

我将推出第二个Lisp/Scheme,并建议将Haskell作为一种能够挑战编程方式的语言.O'Reilly的书"真实世界Haskell"是一个实用的介绍,用具体的用例很好地说明.


gol*_*udo 5

整个"哇哇......这太酷了!我不知道我可以像那样编程." 当我第一次学习函数式编程时,我得到了启示.在我的例子中,这是通过我在Tcl/Tk中的研究得出的,这是多范式的,但我想你可以从任何强函数语言(例如Lisp或Scheme)获得相同的效果.