какой язык более высокого уровня больше всего похож на c? - PullRequest
9 голосов
/ 26 июня 2010

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

Ответы [ 14 ]

14 голосов
/ 26 июня 2010

В C ++ вы можете писать код на C и успешно компилировать его в C ++ (в основном).Поэтому, хотя я предполагаю, что ваш термин «беспорядок» является уничижительным и неоднозначным, единственное, что у вас будет, - это то, что вы решите написать сами.Вы можете использовать C ++ как большую сумку для инструментов, не используя все инструменты (или беспорядок, если хотите).

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

  • Java
  • C #
  • Objective-C
  • D

Из этихC, вероятно, наиболее C-Like, поскольку он является надмножеством C в том смысле, в каком C ++ не совсем.Это также предпочтительный язык для разработки под OSX и iPhone / iPod Touch, который может быть привлекательным.

Java повсеместно распространена, но, вероятно, лучше всего ее описывают как внешне C-подобную.C # имеет ограниченную кроссплатформенную поддержку, но это путь наименьшего сопротивления для разработки Windows GUI с отличными бесплатными инструментами разработки.C # также имеет более простую, но более ограниченную реализацию OO, чем C ++, поэтому может удовлетворить ваши требования, но его сходство с C / C ++ может вводить в заблуждение;он принципиально отличается тем, как он работает аналогично Java.D - это своего рода ниша, разработанная одним автором (хотя и автором некогда известного компилятора Zortech / Symantec C ++).

Что касается "низкого уровня" и "утомительного", когда приступаем к«крупный проект», вы редко начинаете с нуля только с доступной стандартной библиотекой и API ОС, вы используете сторонние и собственные библиотеки для быстрой разработки функциональности более высокого уровня.Тем не менее, подход ОО, как правило, гораздо более поддается такому подходу «повторного использования кода», и, конечно, стандартные библиотеки С ++ и сторонние библиотеки более обширны (не в последнюю очередь потому, что он может использовать как библиотеки С, так и библиотеки С ++).Фактически, я хотел бы предложить, чтобы помимо поддержки форм для ОО, единственное, что делает C ++ более высоким уровнем , - это его расширяемость посредством классов как объектов первого класса.Тем не менее, он остается подходящим языком системного уровня.

13 голосов
/ 26 июня 2010

Какой язык более высокого уровня имеет наиболее C-подобный синтаксис, но без всего того беспорядка, который вы найдете в чем-то вроде C ++?

Я собираюсь ответить на немного другой вопрос:

Что такое язык, который похож на C в том, что он хорошо разработан и красиво продуман, похож на C в том, что он хорош для системного программирования, позволяет людям программировать на более высоком уровне, чем C, и относительно беспорядочный?

Не думаю, что на этот вопрос есть один правильный ответ, но вот три достойных кандидата (в алфавитном порядке):

  • D . Язык D разработан, по сути, как лучший, более чистый C ++. Как и C ++, D явно разработан для включения много функций, но можно надеяться на более чистый, более гармоничный способ, чем C ++. Основное отличие, которое позволяет программистам работать на более высоком уровне, заключается в том, что память управляется автоматически языком, а безопасность гарантируется компилятором (и системой времени выполнения) посредством сборки мусора.

  • Go . Получите высокие баллы за то, что вы хорошо продуманы и прекрасно продуманы: Роб Пайк - мастер-дизайнер, он занимается этим конкретным ремеслом уже 25 лет. Его явная цель состоит в том, чтобы быть беспрепятственным и сделать системное программирование "веселым снова". Go по-прежнему новый язык, и Роб многому научился у Squeak, Newsqueak, Alef и Limbo. Поскольку Роб понимает, что великолепный дизайн - это тот, в котором нет лишних деталей, Go чист и не перегружен. Его основными функциями, которые выше уровня C, являются тип безопасности , сборщик мусора и превосходная модель параллелизма .

  • Java. Java имеет хорошо спроектированное ядро ​​(см. Книгу Джима Уолдо Java: The Good Parts ), но, к сожалению, страдает от беспорядка, который накапливает любой зрелый, успешный язык. Функции Java, которые делают его наиболее подходящим для программирования более высокого уровня, включают интерфейсы , сборщик мусора и исключения .

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

Каждый из этих языков может многое порекомендовать. Мой собственный вкус к языкам, которые являются маленькими и простыми, и я очень восхищаюсь работой Роба Пайка, поэтому, если бы мне пришлось выбирать один для себя, это был бы Go, несмотря на то, что он новый и бездоказательный.

12 голосов
/ 26 июня 2010

Язык Google Go * имеет схожий синтаксис (хотя, я полагаю, достаточно разный) и семантику, хотя со встроенной в язык сборкой мусора, полиморфизмом и т. Д.

8 голосов
/ 26 июня 2010

Язык программирования D - это попытка стать тем, чем должен был быть C ++ (не бить на C ++, это мой основной язык), и я цитирую на веб-сайте: «D - язык системного программирования. Его цель - объединитьмощь и высокая производительность C и C ++ с производительностью программистов современных языков, таких как Ruby и Python. Особое внимание уделяется требованиям обеспечения качества, документации, управления, переносимости и надежности. "Проблема с D - это относительно новаяпо сравнению со многими языками, но, к счастью, он все еще может использовать библиотеки C, что позволяет ему получать доступ к большой уже существующей базе кода.Конечно, стоит проверить.

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

Python, хотя синтаксически не похож на C, является высокоуровневым объектно-ориентированным языком программирования, который очень популярен и может импортировать модули Си, которые могут быть очень полезны в будущем.

4 голосов
/ 26 июня 2010

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

Некоторые люди скажут, что второе предложение доказывает, что утверждение первого предложения неверно.

Другой момент заключается в том, что это в значительной степени неопровержимо. Что такое язык высокого уровня? каковы ваши критерии "близости"? Синтаксис, вычислительная модель, производительность? А какие виды приложений вы хотите создать с помощью этого гипотетического языка?

И если вы просто хотите ограничиться языками, которые "похожи" на C, почему? Как человек, который потерял счет количеством языков программирования, которые он использовал, я могу вам сказать, что различия в синтаксисе языков программирования , как правило, , довольно незначительны. Вы можете привыкнуть к любому синтаксису, если у вас есть время.

4 голосов
/ 26 июня 2010

Это слишком широкий вопрос, и его лучше всего создавать вики сообщества.

Однако, на мой взгляд, главная отличительная черта C - это компактность.Весь язык может быть описан в небольшой книге, такой как K & R.Можно запомнить все синтаксические детали без особых усилий (так как их так мало), и он не пытается защитить своих пользователей от самих себя.

Такие языки, как C ++, гораздо более барочные.Довольно сложно запомнить все правила и исключения.Я чувствую то же самое к Perl и Ruby.Есть много вещей, которые нужно запомнить, и много вещей, на которые стоит обратить внимание.

Я чувствую то же чувство компактности с Python (хотя, возможно, не так сильно, как C).Существует очень мало «специального синтаксиса», и все библиотеки и модули работают одинаково.

Это (вероятно, как и большинство других комментариев по этому вопросу) является личной оценкой и ни в коем случае не является окончательным словом.

4 голосов
/ 26 июня 2010

Вероятно, Java и C # ... Java немного больше, так что я думаю.

И это не язык - это все о библиотеках. Попробуйте Qt (http://qt.nokia.com/).) для C ++, и я знаю, что вы сказали C, но я просто хочу подчеркнуть, что вы будете писать такой же маленький (и, возможно, даже менее!) Код, чем вы бы написали для приложений на Java или C #. Кроме того, они являются родными и кроссплатформенными.

Все о библиотеках.

1 голос
/ 26 июня 2010

Я просто укажу, что Pascal семантически (хотя и не очень синтаксически) очень похож на C, поэтому есть такие опции, как Object Pascal, Modula 2, Ada и Oberon, где вы будете повторно использовать большинство нетривиальная часть того, что вы уже знаете, тривиальная часть - написание.

Возможно, вам лучше придерживаться C # или Java с точки зрения перспектив работы.

EDIT

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

//  C
struct mystruct *myvar;
myvar = (struct mystruct *) malloc (sizeof (struct mystruct));
myvar->a = 1;
myvar->b = 2;
myvar->c = 3;
call_something (myvar);
free (myvar);

//  C++
auto_ptr<mystruct> myvar (new myclass (1, 2, 3));
call_something (myvar);

Дело в том, что "беспорядок" в определении языка существует по причине. С небольшой предварительной работой при написании библиотек, много работы (и беспорядка) избегается в будущем. И даже когда вы пишете библиотеку, вы извлекаете выгоду из предварительной работы, выполняемой другими авторами библиотеки.

1 голос
/ 26 июня 2010

Javascript имеет достаточно C-подобный синтаксис, и это очень популярный язык.У Javascript есть много причуд, но у него есть одно сильное сходство с C - все просто.Полная спецификация Javascript очень короткая, а язык очень мощный и высокоуровневый.Было бы здорово очистить его от некрасивой грязи.

1 голос
/ 26 июня 2010

Это сравнение основных инструкций дает вам хорошее представление о том, какие языки похожи друг на друга.

Я бы сказал, что PHP больше всего похож на C, за исключением переменных $, если вы можете отличить php язык от php платформы. Java пытается некоторым образом, но слишком сильно ориентирован на объект, чтобы быть похожим на C.

...