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

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

Какой высокоуровневый язык имеет самое подобное синтаксису C — но без всей помехи, которую Вы находите в чем-то как C++. Каждый существует?

9
задан 4 revs, 3 users 100% 26 June 2010 в 21:09
поделиться

14 ответов

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

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

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

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

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

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

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

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

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

14
ответ дан 4 December 2019 в 05:53
поделиться

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

1
ответ дан 4 December 2019 в 05:53
поделиться

Я просто отмечу, что Паскаль семантически (хотя и не столько синтаксически) очень похож на 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);

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

1
ответ дан 4 December 2019 в 05:53
поделиться

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

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

0
ответ дан 4 December 2019 в 05:53
поделиться

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

12
ответ дан 4 December 2019 в 05:53
поделиться

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

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

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

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

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

5
ответ дан 4 December 2019 в 05:53
поделиться

Возможно, Java и C#... Java немного больше, я думаю.

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

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

4
ответ дан 4 December 2019 в 05:53
поделиться

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

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

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

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

4
ответ дан 4 December 2019 в 05:53
поделиться

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

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

1
ответ дан 4 December 2019 в 05:53
поделиться

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

0
ответ дан 4 December 2019 в 05:53
поделиться

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

0
ответ дан 4 December 2019 в 05:53
поделиться

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

0
ответ дан 4 December 2019 в 05:53
поделиться

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

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

  • Java
  • C #
  • Objective-C
  • D

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

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

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

14
ответ дан 4 December 2019 в 05:53
поделиться

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

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

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

9
ответ дан 4 December 2019 в 05:53
поделиться
Другие вопросы по тегам:

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