哪些语言具有比C+更高的抽象级别,需要更少的手动内存管理+;? 我学习C++有一段时间了,我发现它非常强大。但是,问题是抽象的层次不多,我必须自己做内存管理。 什么是我可以使用的语言,它使用了更高层次的抽象。< P>如果你对C++语法和风格感到满意,你可能会发现它是一种有趣的语言。或者,如果你想拓展业务,Python、C#、Java、Ruby都是不错的选择。

哪些语言具有比C+更高的抽象级别,需要更少的手动内存管理+;? 我学习C++有一段时间了,我发现它非常强大。但是,问题是抽象的层次不多,我必须自己做内存管理。 什么是我可以使用的语言,它使用了更高层次的抽象。< P>如果你对C++语法和风格感到满意,你可能会发现它是一种有趣的语言。或者,如果你想拓展业务,Python、C#、Java、Ruby都是不错的选择。,c++,programming-languages,C++,Programming Languages,C#如果你在微软的生态系统中 Python和Ruby似乎在Linux/Unix/etc领域最具吸引力 ObjectiveC在Macintosh和iPhone上占据主导地位。最新的MacOS为一部分框架实现了垃圾收集,但要使用其余的框架,您必须自己进行资源管理 您可以学习Java,因为它也可以进行垃圾收集,但要成为一名高效的Java开发人员,您需要熟悉的框架数量是令人望而生畏的。如果您正在寻找非常高级别的抽象和内存管理,那么我认为lisp将是一个理想的候选者。我现在慢慢地适应了,这是我用一门新语言

C#如果你在微软的生态系统中

Python和Ruby似乎在Linux/Unix/etc领域最具吸引力

ObjectiveC在Macintosh和iPhone上占据主导地位。最新的MacOS为一部分框架实现了垃圾收集,但要使用其余的框架,您必须自己进行资源管理


您可以学习Java,因为它也可以进行垃圾收集,但要成为一名高效的Java开发人员,您需要熟悉的框架数量是令人望而生畏的。

如果您正在寻找非常高级别的抽象和内存管理,那么我认为lisp将是一个理想的候选者。我现在慢慢地适应了,这是我用一门新语言所经历的最有趣的事情


话虽如此,Python或Ruby可能是表达性和流行性之间更好的折衷方案。Python的Django框架是一个更好的RAD框架,如果你正在寻找web应用程序的东西,。。或计划

即使你从未使用过它,它也很方便。我只是在学习了模板编程之后才真正掌握了它


另一个是prolog。因为你已经进入C++,下一步将是学习.NET通过或管理扩展C++。这将为你在.NET框架的大世界中迈出一步。一旦你了解了框架,就可以更容易地学习其他的.NET语言,如C**、VB.NET等。
MC++擅长的领域之一,事实上在.NET语言中是独一无二的,就是能够获取现有的非托管(C++)应用程序,使用/clr开关重新编译它,让它生成MSIL,然后在clr下运行。这一非凡的成就被恰当地称为“Itjustworks(IJW)!”有一些限制,但在大多数情况下,应用程序将只运行。C++代码可以由老式的Prtf语句、MFC、ATL甚至模板组成。p> 尝试像哈斯克尔这样真正陌生的东西会让你以不同的方式思考。它还帮助你递归地思考。C++有递归,但它渗透到函数语言的许多部分。

< P> java、C语言、露比、Python和JavaScript可能是你面前的大选择。 而且两种语言的差别也不大。从C++中发现的最大区别是内存管理(即当对象不再被引用时,对象被自动释放)。如果你对桌面风格的应用程序感兴趣,或者对静态类型感兴趣,你会选择这些(你可能会根据你对微软和Windows平台的感觉来选择它们)。在这两种情况下,您将发现比C++更为丰富的标准库。

从静态类型中走出一步,进入一个可以对任何对象调用和方法的世界(如果不存在,则在运行时失败)。这既是一种祝福(少了很多样板代码),也是一种诅咒(编译器无法再为您捕获这些错误)。再一次,您会发现它们有更丰富的标准库,并且比Java/C更高级。性能是主要的缺点,据我所知,Python比Ruby要快一些。如果您对RubyonRails框架社区的web开发感兴趣,您可能会选择Ruby,或者选择Python

与C++完全不同,因为它完全忽略了类。对象只是从其他对象克隆而来,可以在运行时向其添加方法和属性。非常灵活,但也很容易弄得一团糟。如果您对在浏览器中运行应用程序感兴趣,JavaScript是唯一真正的选择,而浏览器作为一个平台正在真正走向成熟。如果您不经常使用浏览器,您会发现可用的标准库相当有限,但是有相当多的好框架填补了一些空白

其他一些有趣的,但更多的利基选择

  • -或多或少在Ruby和Python阵营中,据我所知,速度要快得多。不过要小心,我见过很多优秀的工程师学习Smalltalk,但他们一去不复返;) 当C面向对象时,C++进入一种方式(静态类型),Objtovi-C则采用另一种方式(动态类型)。它非常受Smalltalk的启发,如果你在Mac/iPhone领域,它有一个很好的标准库。在内存管理方面,与我列出的其他内容不同,它不是垃圾收集的(尽管这现在是Mac OS X 10.5上的一个选项),但它确实有一个引用计数方案,这比手工管理内存要简单得多
  • -我自己从来没有学过,除了我需要的Emacs小黑客。据我所知,图书馆在他们那个时代很不错,但尽管语言仍然非常优雅,但它们已经落后于时代了
  • -如果您想要完全脱离对象和类,Haskel及其函数方法是一种有趣的方法(或者如上所述的Lisp,或者如果您使用的是.Net语言)。基本上,您放弃了循环和变量,转而以递归方式执行所有操作。需要一些时间来整理您的想法,对于大多数真实世界的应用程序来说可能并不实用,但这是一个很好的学习方法
  • -我喜欢它-非常干净的语法,专为严肃的工程类型系统设计。静态类型,如C#和Java,并使用较弱的标准库
    ;; treat a vector as a sequence and reverse it
    (reverse [1 2 3 4 5])
    => (5 4 3 2 1)
    
    ;; Take 10 items from a infinite sequence
    (take 10 (range))
    => (0 1 2 3 4 5 6 7 8 9)
    
    ;; Treat a String as a sequence of characters, calculate the frequencies
    (frequencies "abracadabra")
    => {\a 5, \b 2, \r 2, \c 1, \d 1}
    
    ;; Define an infinite lazy sequence of fibonacci numbers, take the first 10
    (def fibs (concat [0 1] (lazy-seq (map + fibs (rest fibs)))))
    (take 10 fibs)
    => (0 1 1 2 3 5 8 13 21 34)