какой язык более высокого уровня больше всего похож на c?

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

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

14 ответов


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

Я отвечу на немного другой вопрос:

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

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

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

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

  • Java. Java имеет хорошо продуманное ядро (см. книгу Джима Уолдо Java: Хороший Части) но, к сожалению, страдает от беспорядка, который накапливается любым зрелым, успешным языком. Особенности Java, которые делают его наиболее подходящим для программирования более высокого уровня, являются интерфейсы, вывоз мусора и исключения.

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

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


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

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

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

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

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


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


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

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

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


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

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

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

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


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

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

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


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

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

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

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

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


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

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


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


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

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

редактировать

Я также добавлю, что на проблема беспорядка, важно разобраться, какой беспорядок важен. 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);

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


Я бы проголосовал за C#. Я не знаю, что вы подразумеваете под "беспорядком", но с точки зрения удобства использования C# хорош, потому что он избегает некоторых утомительных вещей c++, таких как необходимость по существу "объявлять" каждый из методов вашего класса дважды (прототипирование его в файле заголовка, а затем по существу дублирование того же самого в реализации вашего класса). Удаление заголовочных файлов было приятным и в других отношениях, например, устранение конфликтов зависимостей в больших проектах или избегание круговых ссылок. В C#, компилятор позаботится обо всем этом (хотя вам все равно придется устанавливать ссылки на другие файлы или сборки).

Я занимаюсь C# в течение 10 лет, и я все еще скучаю по указателям, которые верят или нет, на мой взгляд, на самом деле облегчили отладку!


Если вы собираетесь часто программировать, хорошо знать языки, которые явно не как друг друга. Особенно полезно знать языки сценариев высокого уровня, такие как python или ruby. Если вы можете думать, как программист в C, вы должны хорошо учиться любому из этих двух. Многие крупные проекты используют преимущества быстрого прототипирования языков более высокого уровня, таких как python или ruby, но также используют низкие накладные расходы (быстрые) скомпилированные языки, такие как C / C++.


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


Как насчет ActionScript 3? Это очень похоже на Java.