Какие языки имеют более высокие уровни абстракции и требуют меньшего количества ручного управления памятью, чем C++?

Вы можете использовать readstream и pipe для чтения файла строки за строкой, не считывая весь файл в память один раз.

var fs = require('fs'),
    es = require('event-stream'),
    os = require('os');

var s = fs.createReadStream(path)
    .pipe(es.split())
    .pipe(es.mapSync(function(line) {
        //pause the readstream
        s.pause();
        console.log("line:", line);
        s.resume();
    })
    .on('error', function(err) {
        console.log('Error:', err);
    })
    .on('end', function() {
        console.log('Finish reading.');
    })
);
17
задан Stephen Whitmore 14 January 2012 в 15:38
поделиться

24 ответа

Java, C#, Ruby, Python и JavaScript являются, вероятно, большим выбором перед Вами.

Java и C# не чрезвычайно различные языки. Этой большой разницей, которую Вы найдете от C++, является управление памятью (т.е. объекты автоматически освобождены, когда на них больше не ссылаются). Вы были бы, выбрал их, если бы Вы интересовались настольными приложениями стиля, или увлечены статическим контролем типов (и Вы, вероятно, выбрали бы между ними на основе того, как Вы чувствуете к Microsoft и платформе Windows). В обоих случаях Вы найдете намного более богатые стандартные библиотеки, чем Вы привыкнете к от C++.

Python и Ruby предпринимает шаги далеко от статического контроля типов в мир, где можно звонить и метод на любом объекте (и перестать работать во времени выполнения, если это не там). Это - оба благословение (намного меньше шаблонного кода), и проклятие (компилятор не может зафиксировать те ошибки для Вас больше). Еще раз Вы найдете, что они имеют более богатые стандартные библиотеки и выше находятся на одном уровне снова, чем Java / C#. Производительность является основным крушением с Python, являющимся несколько быстрее, чем Ruby насколько я понимаю. Для выбора между ними Вы, вероятно, выбрали бы Ruby, если Вы интересны в веб-разработке для сообщества платформы Ruby on Rails, и иначе идете с Python.

JavaScript еще более отличается от C++, в котором он покончил с классами полностью. Объекты просто клонированы от других объектов и могли добавить методы и свойства им во времени выполнения. Очень гибкий, но также и очень легкий превратить в общую путаницу. JavaScript является единственным реальным выбором, если Вы интересуетесь запущенными приложениями в браузере, который действительно добивается признания как платформа. Вы найдете стандартные библиотеки доступными скорее ограниченный, если Вы не сделаете много с браузером, но существует довольно много хороших платформ, которые заполняют некоторые разрывы.

Некоторый другой интересный, хотя больше нишевых вариантов

  • Smalltalk - Более или менее в Ruby и лагере Python, и значительно быстрее насколько я понимаю. Будьте осторожны, хотя _ я видел, что много хороших инженеров изучает Smalltalk и никогда не возвращаюсь;)
  • Objective C - Когда C пошел, объектно-ориентированный, C++ пошел одним путем (статический контроль типов), и Objective C пошел другой (динамический контроль типов). Это - вполне Smalltalk, вдохновленный, и имеет хорошую стандартную библиотеку, если Вы находитесь в Mac / земля iPhone. С точки зрения управления памятью в отличие от всего остального я перечислил, оно не собрало "мусор" (хотя это - теперь опция на Mac OS X 10.5), но оно действительно имеет схему подсчета ссылок, которая делает жизнь значительно более простой, чем руководящая память вручную.
  • Lisp - я никогда не изучал его сам вне того, в чем я нуждался для незначительного взламывания Emacs. Насколько я понимаю библиотеки были хороши в свое время, но хотя язык остается в высшей степени изящным, они упали немного устаревшие.
  • Haskel - Если Вы хотели полное повреждение от объектов и классов, Haskel и оно является функциональным подходом, интересный способ пойти (или Lisp как выше, или F#, если Вы находитесь на земле.Net). В основном Вы бросаете циклы и переменные в пользу выполнения всего рекурсивно. Занимает время для переноса ума, и вероятно не практичен для большинства приложений реального мира, но это - хорошее для изучения.
  • Eiffel - я люблю его - Очень чистый синтаксис, и разработанный для серьезных технических систем типов. Статически типы как C# и Java, и с более слабой стандартной библиотекой, но это заставит Вас действительно думать о дизайне библиотеки классов и языке.
  • ActionScript и Flex - интерфейс программирования к Flash, который является, на основе того, какой, кажется, версия со статическим контролем типов JavaScript. Я играл с ним немного, и это довольно гладко, если Вы интересуетесь разработкой основанных на медиа приложений. Можно также продвинуть вне браузера с Flex и в Воздух платформа создавать реальные настольные приложения.
48
ответ дан 30 November 2019 в 09:56
поделиться

Я сказал бы, начинают с Python. Это имеет более высокий уровень абстракции, и это преподает Вам важность расположения с отступом и создания "симпатичный" код. Не то, чтобы "симпатичный" очень важно, но это сделает будущего специалиста по обслуживанию Вашего кода намного более счастливым:)

существует много примера кода там, и если Вы в Linux существуют различные дистрибутивы там, у кого есть все (или большинство) их инструментов на основе языка. Если Вам нравится рыть в то, как управление работы операционных систем (что-то большинство программистов делает) это - хорошее начало. Прежде чем я получу провокационные сообщения, я сказал управление, не фактический материал ядра для того, что Вам главным образом нужен C, и необходимо покрыть это.

, С другой стороны, могло бы быть хорошо погрузиться в сторону C вещей, проигнорировать OO, наполняют и изучают функциональное программирование. Если Вы направляетесь вниз, что дорога я также предлагаю запуститься с основного ассемблера как одно из верхних предложенных сообщений. Возможно, HLA (Высокоуровневый блок Randall Hyde, он записал, замечательная книга, названная Искусством Программирования Ассемблера), хорошее начало. Вы будете или учиться любить управление памятью или ненавидеть его за остальную часть Вашего живого. Хороший для знания в случае, если Вы хотите запустить карьеру в программировании:)

Однако, если Вы надеетесь делать задание из программирования, Java и J2EE, производитель шальных денег, если Вы знаете то, что Вы делаете. По моему скромному мнению, это становится скучным действительно быстрый все же.

0
ответ дан 30 November 2019 в 09:56
поделиться

Это зависит от того, что Вы хотите сделать. Если у Вас есть некоторые определенные задачи, что Вы интересуетесь выполнением, тогда смотрят на языки, которые являются лучшими для тех типов задач. Лучший способ выучить язык состоит в том, чтобы на самом деле использовать его.

0
ответ дан 30 November 2019 в 09:56
поделиться

Вместо того, чтобы предлагать определенный язык, я рекомендовал бы выбрать любой язык или языки, которые предлагают следующие 4 функции:

  1. Автоматическое управление памятью
  2. Отражение/Самоанализ
  3. Декларативные/Функциональные конструкции (например, функции лямбды)
  4. Утка, Вводящая

, идея здесь состоит в том, чтобы развернуть Вашу перспективу программирования для включения понятий, которые язык C++ не предлагает Вам из поля.

0
ответ дан 30 November 2019 в 09:56
поделиться

Я рекомендую Python, поскольку это не только сексуальный язык, но также и очень широко используемый и легкий интегрироваться с C++ до Повышение. В Python .

, Но как Thomi было сказано, существует партия для исследования в C++, и с помощью библиотек Boost становится действительно легко разработать в.

0
ответ дан 30 November 2019 в 09:56
поделиться

Так как Вы уже в C++, следующий шаг должен был бы изучить.Net до управляемый С++ или справился с расширениями для C++.. это получит Вас шаг в большом мире.Net платформы.. Как только Вы понимаете платформу, делает его более удобным для изучения других.Net языков как C#, VB.Net и т.д.

Одна из областей, в которых выделяется MC ++, и на самом деле уникально в среди языков.NET, способность взять существующее неуправляемое (C++), приложение, чтобы перекомпилировать его с переключателем сброса/, иметь его генерирует MSIL и затем выполнение под CLR. Этот экстраординарный подвиг точно называют "Этими просто работами (IJW)!" Существуют некоторые ограничения, но по большей части, приложение будет просто работать. Код C++ может состоять из старомодных printf операторов, MFC, ATL, или даже обрабатывает по шаблону!

0
ответ дан 30 November 2019 в 09:56
поделиться

Почему бы не учиться Qt? Это - большая платформа разработки приложений, доступная на всех платформах и даже мобильных устройствах!

1
ответ дан 30 November 2019 в 09:56
поделиться
1
ответ дан 30 November 2019 в 09:56
поделиться

Хорошо я думаю, что нет никакого предопределенного маршрута в изучении языков программирования. Можно изучить следующего Ленга на основе потребностей задания, научного исследования, только для забавы, и т.д. существует много опций.

В Вас чувствуют себя комфортно в C++, можно спуститься и изучить некоторый блок. Это - темное искусство, но Вы будете радоваться при обнаружении с некоторым твердым сеансом отладки.

С точки зрения большего количества абстракции, Smalltalk является чрезвычайно забавным, чистым ООП и на 100% динамичным (отладка является приятной вещью сделать, который не находится на статических типизированных языках). Дельфин Smalltalk является хорошей реализацией для Windows, даже свободный выпуск сообщества, дает достаточно для игры с. В многоплатформенном Smalltalk VMs пойдите для Visualworks или Squeak. Visualworks чрезвычайно стабилен и идет с большим количеством документации.

Python используется сегодня во многих, многих полях. Я ничего не знаю о Python за исключением базового синтаксиса и семантики, но это требуется сегодня для многих заданий.

Java это, хорошо Java. Интересно, что Java никогда не завоевывает популярность меня. Вы можете быть заинтересованы на Java, хотя. Попросите здесь преимущества использования его по C++ или другим языкам ООП.

Для веб-разработки идут для JavaScript, особенно рассматривая волну Ajax. Это становится интересным в те дни. Мы говорили о Smalltalk, хорошо, Побережье является удивительной платформой для веб-разработки. Это работает (по крайней мере, я примерил), Писк/Visualworks..., это красиво.

ну, существует много из больше для доставления: Схема, LISP, Ruby, Lua, Bash (!), Perl (тьфу), Haskell... Судите их всех и развлекайтесь!

1
ответ дан 30 November 2019 в 09:56
поделиться

если Вы хотите абстрагировать управление памятью, Java прибывает по моему мнению немедленно.

1
ответ дан 30 November 2019 в 09:56
поделиться

попробуйте c# очень:)

1
ответ дан 30 November 2019 в 09:56
поделиться

Схема.

Маленький Интриган и Структура и Интерпретация Компьютерной программы расширят Ваш ум странными и замечательными способами.

DrScheme является хорошим IDE для новичков. Язык программирования Схемы делает хорошую, свободную ссылку.

2
ответ дан 30 November 2019 в 09:56
поделиться

Я сказал бы, что это зависит от вида программирования, Вы хотите попробовать. Если Вы хотите остаться на стороне ООП, учиться Python или Ruby , оба языка обеспечивают простой способ создать привязку для использования кода C++ из сценария (по причинам эффективности).

при необходимости в другом подходе к программированию выучите "функциональный" язык как Lisp или Haskell.

И если необходимо включать быстрый и небольшой язык сценариев в приложении C++, попробуйте Lua.

Наконец, что не менее важно, если Вы знаете Java и ненавидите его, можно попробовать Scala, язык, где можно смешать классы Java с кодом Scala, очень интересным.

2
ответ дан 30 November 2019 в 09:56
поделиться

Хорошо, если бы Вы ищете очень высокий уровень абстракции и управления памятью тогда, я сказал бы, что шепелявость была бы идеальным кандидатом. Я изучение это теперь, медленно, и это является самым забавным, я имел с новым языком.

сказавший, что Python или Ruby могут быть лучшим компромиссом между выразительностью и популярностью. Платформа Django Python является одной из лучших платформ RAD при поиске материала веб-приложения.

2
ответ дан 30 November 2019 в 09:56
поделиться

C#, если Вы находитесь в экосистеме Microsoft.

Python и Ruby, кажется, имеют большую часть тяги в пространстве Linux/Unix/и т.д.

ObjectiveC является доминирующим на Macintosh и iPhone. Новая MacOS реализует сборку "мусора" для подмножества платформ, но использовать остальных необходимо было бы сделать управление ресурсами сами.

Вы могли изучить Java, поскольку он делает сборку "мусора" также, но количество платформ, с которыми необходимо было бы познакомиться быть продуктивным Java-разработчиком, является пугающим.

3
ответ дан 30 November 2019 в 09:56
поделиться

Если Вы довольны синтаксисом C++ и стилем, Вы могли бы найти D быть интересным языком. Или если бы Вы хотите расшириться, какой-либо Python, C#, Java, Ruby был бы отличным выбором.

3
ответ дан 30 November 2019 в 09:56
поделиться

так же Lisp.. или схема

, Даже если Вы никогда не используете его, это удобно. Я [только 110] действительно получили шаблонное программирование после изучения его.

Другой - пролог. это вставляет Вас не последовательное мышление.

4
ответ дан 30 November 2019 в 09:56
поделиться

Попытка чего-то действительно внешнего как Haskell позволит Вам думать по-разному. Это также помогает Вам думать рекурсивно. C++ имеет рекурсию, но это пропитывает намного больше частей функциональных языков.

5
ответ дан 30 November 2019 в 09:56
поделиться

Я вижу много превосходных предложений до сих пор. Однако я думаю, что существует что-то пропавшие без вести, ассемблер.

, Почему изучают ассемблер?

  • Это не столь трудно, как можно думать . Ассемблер намного меньше в объеме, чем много современных языков, существует несколько приемов, которые необходимо понять для него, чтобы иметь смысл, но, дело не в этом сложный.
  • Это расширяет Вашу базу знаний. Знание основных принципов почти всегда выгодно, работая на высоком уровне.
  • Это может быть чрезвычайно полезно при отладке. Особенно собственный код отладки без источника, знание Вы получаете от изучения, что ассемблер улучшает Вашу способность отладить в этих ситуациях стремительно.
  • Это дает Вам больше опций. , Когда редкое обстоятельство подходит, где ассемблерный код необходим, Вы не будете беспомощны.
  • Это хорошо для Вашего резюме. Это показывает, что Вы учитесь вне просто абсолютного минимума, должен был хранить верность Вашей текущей работе, это показывает любопытство об основных принципах, и это помещает Вас в различный класс программистов, и тот класс имеет тенденцию быть более опытным и более способным.
  • Это просто прохладно.

Некоторые ресурсы ассемблера:

18
ответ дан 30 November 2019 в 09:56
поделиться

Я сказал бы, что от Вашего вопроса Вы, вероятно, не закончили узнавать о C++. При тихом выполнении собственного управления памятью тогда, у Вас все еще есть длинный путь для движения моего друга!

Выезд auto_ptr и shared_ptr - проверяют библиотеки Boost.

Так же с абстракцией - на что Вы конкретно жалуетесь? AFAIK там не очень, Вы не можете сделать с C++, который присутствует в другом языки со строгим контролем типов .

я знаю, что это не отвечает на Ваш вопрос - Вы хотите переместиться вперед, но C++ является одной из тех вещей, где Вы никогда действительно прекращаете учиться. Если Вы скучаете, берете краткий набег в шаблоны и обрабатываете метапрограммирование по шаблону...

26
ответ дан 30 November 2019 в 09:56
поделиться

Я предлагаю изучить проектирование баз данных и язык запросов, такой как SQL.

можно запустить с настольного инструмента как Microsoft Access или использовать свободную SQL Server Express или Postgre или MySQL.

1
ответ дан 30 November 2019 в 09:56
поделиться

Лично Я программировал на Java, Python, C / ++, и мне больше всего нравится python. Хотя C ++ может делать все, что умеет Python, и даже больше, я написал программу Python примерно с 10 строками, которая на C ++ займет около 50. Итак, мораль истории - используйте python.

0
ответ дан 30 November 2019 в 09:56
поделиться

Я должен написать отдельный ответ для Perl. В то время как Python примерно эквивалентен по функциональности и считается более чистым и современным, Perl обладает своей собственной элегантностью - элегантностью чистого прагматизма. Он также может похвастаться действительно отличной библиотечной поддержкой. Взгляните на Perl, чтобы расширить свой мозг в направлении, противоположном Haskel :) (хотя поклонники Perl утверждают, что его можно использовать для функционального программирования).

0
ответ дан 30 November 2019 в 09:56
поделиться

Если вы еще этого не сделали, попробуйте язык сценариев. Это должно изменить то, как вы работаете и думаете. Надеюсь, в хорошем смысле :)

0
ответ дан 30 November 2019 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: