|
C++ & Pascal, Помощь утопающим |
|
|
|
Sep 8 2016, 17:28
|
Группа: Новичок
Сообщений: 1
Регистрация: 8-09-16
Пользователь №: 93 266

|
Не могу понять чем отличается C++ и Pascal , подскажите пожалуйста , как начинающему программисту в какой среде лучше работать и понятней ?
|
|
|
|
|
 |
Ответов
(1 - 89)
|
Sep 8 2016, 19:25
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(Vadimuskainstik @ Sep 8 2016, 17:28)  Не могу понять чем отличается C++ и Pascal C++ отличается от Pascal зарплатой. Цитата(Vadimuskainstik @ Sep 8 2016, 17:28)  в какой среде лучше работать и понятней ? Лучше работать в женской среде. Это не всегда понятно, но почти всегда приятно.
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Sep 8 2016, 20:41
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(Vadimuskainstik @ Sep 8 2016, 19:28)  Не могу понять чем отличается C++ и Pascal , подскажите пожалуйста , как начинающему программисту Два разных языка программирования высокого уровня. Паскаль как таковой уже давно не развивается, если не считать Free Pascal, но Вы наверное не его имеете ввиду, а тот самый борландовский. Как верно заметили выше, новые проекты под него вряд-ли кто-то делает. У Паскаля есть неплохой наследник под названием Delphi. Однако и он в настоящее время уступает C++ в популярности. Цитата(Vadimuskainstik @ Sep 8 2016, 19:28)  в какой среде лучше работать и понятней ? Если C++, то под Windows рекомендую MS Visual Studio (Community edition бесплатная) Если Delphi, то Embarcadero RAD (платная) или Lazarus (бесплатная, на основе Free Pascal)
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Sep 8 2016, 20:59
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(sigmaN @ Sep 8 2016, 22:54)  Ага, еще на MFC подсесть ему посоветуйте )))))) Пусть уж лучше начинает хоть и с фреймворка, зато толкового. Чем либо грызть кактусы на голом Win API, либо MFC либо что там у нас последнее было у MS для интерфейсов? Какая-то монстроузная технология название которой я забыл ) Я и не предлагал MFC. Кстати MFC - это не только GUI. Есть замечательный .Net с массой всевозможных классов, отличный фремворк. И потом, человек спросил про среду для разработки C++, мое мнение - MSVS наиболее удобная.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Sep 8 2016, 22:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата(alexunder @ Sep 8 2016, 23:59)  Я и не предлагал MFC. Кстати MFC - это не только GUI. Есть замечательный .Net с массой всевозможных классов, отличный фремворк. И потом, человек спросил про среду для разработки C++, мое мнение - MSVS наиболее удобная. Наиболее толковый и простой С++ фреймворк для норм-программиста, тем более смотрящего в сторону embedded - это Qt + C++11. Код нужно на языке писать, а не на среде или на библиотеке. Библиотеки и среды можно(и нужно) использовать, но уметь нужно работать именно на языках, в текстовом редакторе  Сам часто себя ловлю на том, что начинаю зависеть от подсветки синтаксиса - тогда я отключаю ее на месяц, чтобы мозг на код смотрел, а не на цветастики. Цветовые схемы тоже часто меняю, чтобы не привыкать. Была у меня одна ситуация, когда-то работал на одной фирме. Там был проггер, у которого стояли все эти MP-labы, IARы и MSVSы. Потом это все слетело вместе с винтом и он выпал в осадок. Он не мог работать в текстовом редакторе вообще! Даже свой код читать без привычной ему подсветки не мог. А нужно было сделать простую прошивку для ПИКа, которую я в VIM-е на старом допотопном ноуте с 256мб оперативки настрочил за часа 2, скомпилировал SDCC, зашил не помню уже чем и получил за это неплохую премию  А проггер в это время устанавливал свой зоопарк, 1.5 дня на это потратил  Хотя он толковый программист в своей кухне, сам у него много чему учился. Но зависимость от этих сред обрел быстро и избавиться от нее не может.
|
|
|
|
|
Sep 8 2016, 23:20
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(brag @ Sep 9 2016, 00:45)  Код нужно на языке писать, а не на среде или на библиотеке. Библиотеки и среды можно(и нужно) использовать, но уметь нужно работать именно на языках, в текстовом редакторе  О, да. Я раньше вообще в тетрадочке писал, там подсветки не было  Сейчас, кстати, иногда так делаю. Если серьезно, то вот на Питоне в самом деле пользуюсь обычным текстовым редактором, ибо там и среда как бы и не нужна. По поводу фреймворков - тут уж у каждого свои фломастеры. Мне персонально по нраву многообразие дотнеты, я ей даже не в C++/C# пользуюсь, а непосредственно в том же Питоне (IronPython).
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Sep 9 2016, 07:21
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
и тот и другой - императивные языки. Паскаль - был создан для обучения программированию, что он делает прекрасно. С - для писания дровей и ембеббеда - что он делает тоже вполне удовлетворительно, и альтернатив пока не видно. для обучения он уже не так хорош. с++ - неизбежно на него перейдете когда начнете делать UI, или навернутые полиморфные протоколы реализовывать, или просто большие проекты. лучше учебу с него не начинать, те учебники что я видел сразу начинали грузить виртуальными классами и шаблонами. фрипаскаль - единственный мне знакомый ныне живой паскаль. у них есть даже порт ембеббед на кортех М3. он покрывает частично мощь с++, и при этом будет так же внятен как простой С. вобще это уникальная штука, его ориентированость на множество ОС чемто замахивается на GCC. у паскаля есть большое неоспоримое преимущество перед С - простая и понятная система компиляции проекта. фактически он сам все находит, соединяет и собирает, если вы остаетесь в рамках паскаля. и делает он это очень очень быстро. у С и С++ - вам придется либо использовать студии типа эклипс или МСВС которые генерят скрипты для сборки, или освоить make, Cmake или Qmake, или какойто еще мак. это еще один язык програмирования. при этом сборка среднего проекта может идти десятки секунд, минуты. сборка линя может занимать час и более. скорость сборки радикально меняет подход к стилю отладки проекта. Паскаль оказывается более удобен. Цитата(ViKo @ Sep 9 2016, 07:52)  Посоветую язык C# и уже упомянутую Visual Studio Community, будете в современном тренде. Это если для Windows писать. встречал людей из института пришедших видимо начинавших с шарпа - они не понимали что такое указатель. програмировать на простом С или С++ - было им невозможно. испытательный срок не выдерживали.
|
|
|
|
|
Sep 9 2016, 07:28
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(AlexRayne @ Sep 9 2016, 09:21)  и тот и другой - императивные языки. Паскаль - был создан для обучения программированию, что он делает прекрасно. встречал людей из института пришедших видимо начинавших с шарпа - они не понимали что такое указатель. програмировать на простом С или С++ - было им невозможно. испытательный срок не выдерживали. Пожалуй, подпишусь под каждым словом. Начинать программировать с C#, конечно, не стоит, а упомянут сей зверь тут был в аспекте построения ПО с графическим пользовательским интерфейсом. Цитата(AlexRayne @ Sep 9 2016, 09:21)  живой паскаль. у них есть даже порт ембеббед на кортех М3. а вот за это спасибо! Попробую взглянуть на досуге.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Sep 9 2016, 08:58
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(AlexandrY @ Sep 9 2016, 10:38)  Ну сделайте или покажите мне программу с окнами для работы с Bluetooth LE через встроенный в комп адаптер Bluetooth написанную с QT или с использованием C#/WPF или просто на любом языке с использованием .NET А в чем принципиальная сложность создания такой программы упомянутыми средствами? У меня прямо сейчас навскидку более сложное (чем Вы предложили) ПО для работы с периферией написано .net. Теситруется "видеокамера", с которой софт общается через CameraLink, 30fps, HDR. От .net используются формы и классы для примитивной обработки изображения. Все написано на Питоне, кроме обертки на CameraLink.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Sep 9 2016, 09:00
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
Цитата(Kabdim @ Sep 9 2016, 11:17)  Если нужно делать GUI легко и с ограниченным временем, то delphi - это хорошо. Раньше это почти однозначно, но сейчас на C#/WPF или QT можно делать всё то же самое почти так же удобно. Для всего остального о Паскале следует забыть. ЗЫ Я программировал на delphi достаточно долго, как раз в те времена когда построение GUI было там на голову выше всех остальных. Базы данных - их конек, они первые в них рванули, и заняли свою нишу в бугалтерии. сейчас конечно С++ и другие подтянулись, но не ранее чем QT допилили нормальный РАД. Вообще если с паскалем связываться - freepascal/lazarus единственный вариант. эмбаркадера стоит неадекватных денег - против МСВС на порядок дороже. и ломать ее сложнее. и без сапорта - ее пользовать рисково, ибо галюны таки есть.
|
|
|
|
|
Sep 9 2016, 09:23
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Может быть быть вам не будет сложно конкретизировать свою мысль? Что именно обычным способом (которые кстати включают в себя возможность использовать нативный код) мне не удастся на дот нете? И тот же вопрос про QT. То что где-то есть библиотека/компоненты где-то нет? Ну так можно сделать несложную обертку и использовать что угодно где угодно. А может лучший вариант будет вовсе переписать. Цитата(AlexRayne @ Sep 9 2016, 12:00)  Базы данных - их конек, они первые в них рванули, и заняли свою нишу в бугалтерии. сейчас конечно С++ и другие подтянулись, но не ранее чем QT допилили нормальный РАД. Может быть, возможно я ошибся в своей категоричности из-за того что не соприкасался с бухгалтерией. По моему жизненному опыту там обычно 1C крутится.
|
|
|
|
|
Sep 9 2016, 13:54
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (AlexRayne @ Sep 9 2016, 10:21)  Паскаль - был создан для обучения программированию, что он делает прекрасно. Да, на уровне "Маша мыла Раму". Все, что сложнее, то начинается делаться в паскалеобразных все больше и больше через анус и реинкаринуется в неведомо что типа "Дельфи". QUOTE у паскаля есть большое неоспоримое преимущество перед С - простая и понятная система компиляции проекта. фактически он сам все находит, соединяет и собирает, если вы остаетесь в рамках паскаля. и делает он это очень очень быстро. Глупость  . Язык не накладывает никаких ограничений на инструментальные средства. То, что паскалееобразые по традиции валят все в кучу и скрывают суть работы от "глупых" программистов, есть зло. QUOTE при этом сборка среднего проекта может идти десятки секунд, минуты. сборка линя может занимать час и более. скорость сборки радикально меняет подход к стилю отладки проекта. Паскаль оказывается более удобен. Феерическая муть про время. QUOTE встречал людей из института пришедших видимо начинавших с шарпа - они не понимали что такое указатель. програмировать на простом С или С++ - было им невозможно. испытательный срок не выдерживали. А те, котрые с "Паскаля" пришли, понимали QUOTE (AlexRayne @ Sep 9 2016, 12:00)  Базы данных - их конек, они первые в них рванули... Если то, что у Боланда называть "базой даных", то тогда я Папа римский  . Но охламонов до сих пор кропающих бухгалерские вещи на дельфях хватает  . Повбивал бы гадов http://www.accor.lv/index.php?page=program&lang=rus
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 9 2016, 14:23
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(zltigo @ Sep 9 2016, 16:54)  Но охламонов до сих пор кропающих бухгалерские вещи на дельфях хватает  . Нее.. , Delphi это реально круто. Он действительно компилит в разы быстрее C++ Но это скорее особенность RAD Studio. У меня проект для автоматизации бизнес процессов заводика одного как-то раз славный вышел. Бухгалтерия там, учет товара, склад, взвешивание и все такое. Летает как ракета. Включается без всякой инсталляции. Доступна отовсюду из интернета с любого планшета с виндой. Подключается к любому оборудованию легко. База данных на MS SQL. Ни разу не упала за пару лет. Клиенту любые фичи гарантировались не глядя. Компилилась мгновенно все равно что с Python-ом работал бы.
|
|
|
|
|
Sep 9 2016, 22:48
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Vadimuskainstik @ Sep 8 2016, 20:28)  Не могу понять чем отличается C++ и Pascal , подскажите пожалуйста , как начинающему программисту в какой среде лучше работать и понятней ? Сами языки отличаются лексикой. Грубо говоря принципиальных отличия только два: 1. вместо { в С++ паскаль использует "begin" и, соответственно, вместо сишного "}" - "end". 2. способ записи: в Си используется "тип_переменной имя_переменной;", в паскале тоже самое будет записано как "var имя_переменной:тип_переменной". Различия, по сути похожи на отличие современного русского от дореволюционного: вроде бы все понятно, но быстро читать не получается. И очень напоминает ситуацию в самом С с его "правилами оформления" кода. В силу исторических причин С гораздо более распространен, поэтому и более предпочтителен.
|
|
|
|
|
Sep 10 2016, 07:00
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 10 2016, 08:37)  Да, это точно. И все это императив, что С, что паскаль, разницы на чем учиться императиву нет. Небольшое уточнение: разница на чем учиться все-таки есть - именно из-за лексики и вырабатывающейся привычке к ней. Лучше сразу выбрать "правильную", чтобы не иметь "дурных" привычек.
|
|
|
|
|
Sep 10 2016, 07:13
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (AlexandrY @ Sep 9 2016, 17:23)  База данных на MS SQL. Ни разу не упала за пару лет. Але! Причем тут MS SQL к утверждению "Базы данных - их конек, они первые в них рванули". Типа "первые рванули" они, блин, на пcевдо базе toolboх, потом уже цепляли через прокладки ЧУЖИЕ paradoх, dbase и же с ними. Уродская прокладка dbExpress о которой Вы, видимо, говорите, появилась и того позже, когда уже в реальном мире для борланда все кончилось. Так что "конек" у борланда всегда был один - давайте мы свяжем Вам руки и дадим красивые прокладки-библиотеки ко всему чему попало. За пользование этой "красотой" Вы должны отключить мозг и поклоняться Борланду и пророку его Компоненту. QUOTE (aiwa @ Sep 10 2016, 01:48)  Грубо говоря принципиальных отличия только два: Это утверждение не тянет даже на глупую шутку
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 10 2016, 07:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Небольшое уточнение: разница на чем учиться все-таки есть - именно из-за лексики и вырабатывающейся привычке к ней. Лучше сразу выбрать "правильную", чтобы не иметь "дурных" привычек. Лучше привычек не вырабатывать вовсе. И почему это C правильная, а Паскаль - нет, потому что все привыкли к С? Я не говорю конкретно о паскале, я говорю в общем. Нужно уметь программировать, а на чем - это уже дело случая. Сегодня на одном, а завтра может быть понадобится на другом. Я тоже привык к С(а со временем и к С++) и очень сейчас от этого страдаю, эта привычка мне мешает работать на более продвинутых языках, у которых синтаксис да и стиль в целом совсем другой.
|
|
|
|
|
Sep 10 2016, 10:13
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 10 2016, 10:21)  Лучше привычек не вырабатывать вовсе. Они вырабатываются независимо от желания человека. Цитата(brag @ Sep 10 2016, 10:21)  Я не говорю конкретно о паскале, я говорю в общем. Так я тоже не о паскале а о читаемости кода в силу привычки. В качестве иллюстрации пример из С двух вариантов оформления: Код первый_блок{ код второй_блок{ код третий_блок{ код } } } и Код первый_блок { код второй_блок { код третий_блок { код } } } Одно и тоже, но один из них из-за привычки легче читается.
|
|
|
|
|
Sep 10 2016, 10:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Они вырабатываются независимо от желания человека. Зато можно этому препятствовать. Тут конечно от желания зависит. Если у Вас стоит цель устроиться на работу и выполнять задачи одного скажем так класса, на одном конкретном языке, фреймворке, стиле итд, до конца своих дней - тогда привычки только в пользу. А если хотите быть "универсальным" программистом, быстро адаптироваться под новомодные тренды, тогда привычки нужно давить на корню - писать на разных языках, в разном стиле, на разных инструментах, платформах итд. Тогда любой код будете одинаково нормально читать(и писать), без всяких студий, подсветок синтаксиса итд, в обычном консольном текстовом редакторе.
|
|
|
|
|
Sep 10 2016, 11:11
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (brag @ Sep 10 2016, 10:21)  Нужно уметь программировать, а на чем - это уже дело случая. Это несомненно, но все же надо и понимать, на чем программировать не надо  . QUOTE (aiwa @ Sep 10 2016, 13:13)  Одно и тоже, но один из них из-за привычки легче читается. Форматирование в привычный вид делается автоматически. И это действительно надо делать, если предстоит серьезная работа с чужими "неправильно" отформатированными исходниками. Худо, только, если когда больные на голову авторы языка начинают требовать абсолютно жесткого выполнения надуманных правил. QUOTE (brag @ Sep 10 2016, 13:29)  Тогда любой код будете одинаково нормально читать(и писать), без всяких студий, подсветок синтаксиса итд, в обычном консольном текстовом редакторе. Ну и зачем заниматься такой ерундой в "обычном редакторе", когда под языки уже, как лет 30 c гаком все настраивается в тоже ОБЫЧНЫХ текстовых редакторах?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 10 2016, 11:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Так вот считаю что си это лучшее, на много лучшее на чём мне приходилось программировать. Есть гораздо более продвинутые и безопасные языки, чем С. Для нынешних задач С практически умер. Плюсы его заменяют полностью. Нужен он только для поддержки legacy кода и legacy-программистов  , новый код желательно писать на других языках, дающих гораздо больше возможностей. Цитата У си типизация мягкая. Это очень плохо и опасно. Цитата Худо, толькл, если когда больные на голову авторы языка начинают требовать абсолютно жесткого выполнения надуманных правил. Они не надуманные. Например, требования к форматированию в Python сделано ради приучения программистов определенного стиля форматирования кода, и это очень важно, когда все пишут в одном стиле - легче читать, особенно тем, у кого привычки  Или const переменные по умолчанию в Rust, или невозможность просто так иметь одновременно 2 ссылки на один обьект в нем же - тоже очень важно. В С++ приходится самому следить за этим, вручную везде пихать консты, а в Rust за этим следит компилятор. Rust был разработан для полной замены С++, и там очень строгие правила. Каждый язык проектируется с определенной целью, а не для того, чтобы кто-то думал, что авторы языка больные на голову. Другое дело - legacy-зависимость
|
|
|
|
|
Sep 10 2016, 11:40
|

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(brag @ Sep 10 2016, 14:19)  Есть гораздо более продвинутые и безопасные языки, чем С. Для нынешних задач С практически умер. Плюсы его заменяют полностью. Нужен он только для поддержки legacy кода и legacy-программистов  , новый код желательно писать на других языках, дающих гораздо больше возможностей. Да но на си пишут и новые приложения. На си написаны win7,8, 10, android, ios, естественно все линуксы, самые популярные игры САПРы и прочее. Большинство новых приложений написаны на си, за исключением тех что пишут домохозяйки и менеджеры.
|
|
|
|
|
Sep 10 2016, 12:06
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (brag @ Sep 10 2016, 14:19)  Они не надуманные. Например, требования к форматированию в Python сделано ради приучения программистов определенного стиля форматирования кода... И эта причина называется "не надуманной"  . QUOTE (brag @ Sep 10 2016, 14:19)  Каждый язык проектируется с определенной целью, а не для того, чтобы кто-то думал, что авторы языка больные на голову. Когда цель есть устроить концлагерь на ровном месте, дабы "неразумных" типа направить на путь истинный, то такие цели мне неприемлимы.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 10 2016, 12:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Да но на си пишут и новые приложения. На си написаны win7,8, 10, android, ios, естественно все линуксы, самые популярные игры САПРы и прочее. Большинство новых приложений написаны на си, за исключением тех что пишут домохозяйки и менеджеры. Это все на плюсах или чем-то более высокоуровневом, а C там в качестве legacy-кода, не переписывать же терабайты кода на другой язык, приходиться поддерживать код на старом языке. Новый софт пишеться на продвинутых языках - C++, JS, Go, Python и куче других. Какой смысл делать на С, если есть языки по-лучше? Разве что, если тот кто делает или тот, кто будет поддерживать ничего кроме С не знает и учить не хочет
|
|
|
|
|
Sep 10 2016, 12:25
|

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(brag @ Sep 10 2016, 15:13)  Это все на плюсах или чем-то более высокоуровневом, а C там в качестве legacy-кода, не переписывать же терабайты кода на другой язык, приходиться поддерживать код на старом языке. Новый софт пишеться на продвинутых языках - C++, JS, Go, Python и куче других. Какой смысл делать на С, если есть языки по-лучше? Разве что, если тот кто делает или тот, кто будет поддерживать ничего кроме С не знает и учить не хочет  Естественно С++. я его и имел ввиду, думал Вы поняли меня. Чисто сишный компилятор для современного компа уже и не найти наверно.
|
|
|
|
|
Sep 10 2016, 12:52
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 10 2016, 14:19)  новый код желательно писать на других языках, дающих гораздо больше возможностей. Самые большие возможности - это когда язык позволяет реализовать любую ассемблерную конструкцию. Все остальное - просто реклама. Цитата(brag @ Sep 10 2016, 14:19)  Или const переменные по умолчанию в Rust, или невозможность просто так иметь одновременно 2 ссылки на один обьект в нем же - тоже очень важно. В С++ приходится самому следить за этим, вручную везде пихать консты, а в Rust за этим следит компилятор. Rust был разработан для полной замены С++, и там очень строгие правила. Rust не знаю, но ,судя по описанию, для замены С++ он не годится. Цитата(brag @ Sep 10 2016, 15:13)  Это все на плюсах или чем-то более высокоуровневом, а C там в качестве legacy-кода, не переписывать же терабайты кода на другой язык, приходиться поддерживать код на старом языке. Давайте расставим точки над i. С и С++ - это один язык только в разные времена. Один в те времена, когда в больших микросхемах было мало памяти, второй - когда в маленьких микросхемах стало до фига памяти. Переписывать терабайты кода совершенно без надобности, можно лишь перекомпилировать. А причин для перевода legacy-кода на более современные языки у производителей авто- и прочего действительно нет, для них главное надежность. И тут они действительно правы.
|
|
|
|
|
Sep 10 2016, 15:13
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Цитата Новый софт пишеться на продвинутых языках - C++, JS, Go, Python и куче других. Какой смысл делать на С, если есть языки по-лучше? Вы там знаете на чем пишут. Вы до недавнего времени даже не знали что ваш Node.JS писан поверх Сишной либы https://github.com/libuv/libuv В папочку src то заходили? Чего дам одни .c файлы?
--------------------
The truth is out there...
|
|
|
|
|
Sep 10 2016, 19:32
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(sigmaN @ Sep 9 2016, 22:38)  Лично я очень много раз приходил к мысли,... вместо Delphi юзал С++! Ооочень очень много раз приходил к такой мысли. Печальная мысль. Жаль потерянного времени  На C++ вы не переходили потому что абсолютное большинство компонентов в RAD Studio написано на Delphi. С Builder еще можно юзать пока вы делаете простенькие утилиты, а начав писать корпоративные приложения вам приходится перейти на Delphi. Поскольку и VCL, и FireMonkey, и FireDAC, и DevExpress, и TeeChart, и Indy и т.д.- все написано на Delphi. Попытавшись перейти на С Builder теряете возможность их отладки. Безусловно сейчас надо рекомендовать Delphi Berlin особенно тем кто хочет быстро делать программы одновременно под Win, Android и iOS.
|
|
|
|
|
Sep 10 2016, 19:54
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(brag @ Sep 10 2016, 11:19)  Есть гораздо более продвинутые и безопасные языки, чем С. Для нынешних задач С практически умер. Да щаззз прям! https://www.youtube.com/watch?v=XHosLhPEN3k
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Sep 11 2016, 06:22
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(AlexandrY @ Sep 10 2016, 22:32)  С Builder еще можно юзать пока вы делаете простенькие утилиты, а начав писать корпоративные приложения вам приходится перейти на Delphi. Имел опыт корпоративных приложений на Delphi: клиенская часть MS SQL. Перешел на СBuilder, потому что begin-end было "невыносимо-мучительно" видеть. Проблем с отладкой не испытывал. Единственной потерей было то, что билдеровский "Tпредок::" смотрел на права доступа, в отличие от дельфийского inherited.
|
|
|
|
|
Sep 11 2016, 10:15
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (aiwa @ Sep 11 2016, 09:22)  потому что begin-end было "невыносимо-мучительно" видеть. Да, это дурацкая идея с begin-end  , явно тоже мечтали "улучшить" читамость  . Не пойму только одного, почему-бы прежде, чем реализовывать подобняе "идеи" не заменить в любом текте, например, точки на end и не потестировать получившиеся дерьмо на читаемость. На грани 80x-90x приходилось один большой борлондячий проект перелопачивать. Через несколько дней ошизев от созерцания бесконечных begin-end заменил их по всему проекту на {} а перед компиляцией прогонял через сишный препроцессор для обратной подстановки. Работал еще с одним языком у которго синтаксис и не только, был похож на паскалевский, потом в Автора хватило ума переделать на похожий на сишный.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Guest_TSerg_*
|
Sep 11 2016, 13:27
|
Guests

|
"Перекличка куликов, часто с фальшивым голосом, из своего болота и ни о чем." (С)
|
|
|
|
|
Sep 11 2016, 22:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Самые большие возможности - это когда язык позволяет реализовать любую ассемблерную конструкцию. Все остальное - просто реклама. Самые большие возможности у программирования в машинных кодах, все остальное - просто реклама. Тру-программисты пишут как минимум на ассемблере, остальные - это домохозяйки  Цитата Rust не знаю, но ,судя по описанию, для замены С++ он не годится. с чего бы это? Аргументы? Цитата Давайте расставим точки над i. С и С++ - это один язык только в разные времена. Один в те времена, когда в больших микросхемах было мало памяти, второй - когда в маленьких микросхемах стало до фига памяти. Это 2 кардинально разных языка, просто С++ поддерживает С и то не полностью. Посмотрите на классический С-исходник, и на модерн-С++ , особенно асинхронный, с шаблонами,лямбдами, итд(например из моих примеров  . Хотя одну и ту же задачу можно решить как на асме, так и на С, так и на С++, при чем одним и тем же способом. Например линукс, винда - это OOП, полноценные динамические обьекты, но написаны на С (привет legacy код). И память тут не причем, пишу на мк с 256байт памяти и 1кб флеша на С++ и ничего, оба языка статические и у обеих абсолютно одинаковое требование по ресурсам(RTTI и exceptions не в счет). Цитата Вы до недавнего времени даже не знали что ваш Node.JS писан поверх Сишной либы https://github.com/libuv/libuvВ папочку src то заходили? Чего дам одни .c файлы? wink.gif Причины почему там С-файлы я уже назвал.
|
|
|
|
|
Sep 12 2016, 01:17
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 12 2016, 01:02)  Самые большие возможности у программирования в машинных кодах, все остальное - просто реклама. Тру-программисты пишут как минимум на ассемблере, остальные - это домохозяйки  Напрасно иронизируете. Ассемблер - это всего лишь хитрош...ый способ записи машинных кодов. Поэтому можно повториться и с машинными кодами: тот язык высокого уровня будет более удачен, который позволит реализовать любую конструкцию в машинных кодах. Цитата(brag @ Sep 12 2016, 01:02)  с чего бы это? Аргументы? Очень просто: описанное Вами как преимущество запрет иметь два указателя на один объект - это всего лишь ограничение языка. А ограниченный в чем-то язык уже не сможет полноценно заменить язык без ограничений. Цитата(brag @ Sep 12 2016, 01:02)  Это 2 кардинально разных языка, просто С++ поддерживает С и то не полностью. Посмотрите на классический С-исходник, и на модерн-С++ , особенно асинхронный, с шаблонами,лямбдами, итд(например из моих примеров  . Опять Вы сравниваете один и тот же язык двух различных временных периодов. Человек младенческого возраста и взрослый человек имеют совершенно различные возможности. Асинхронность в С++ - это всего лишь следствие развития и доступности техники: многоядерность стала по карману обычному обывателю. А лямбды - это всего лишь стенография и не более. Даже лучше сказать "стенографические приемы" в языке. По сути как и "++". Цитата(brag @ Sep 12 2016, 01:02)  Например линукс, винда - это OOП, полноценные динамические обьекты, но написаны на С (привет legacy код). Вообще-то полноценные динамические объекты винды и объекты ООП С++ никак не связаны. мелкософт даже просит не путать. Цитата(brag @ Sep 12 2016, 01:02)  И память тут не причем, пишу на мк с 256байт памяти и 1кб флеша на С++ и ничего, оба языка статические и у обеих абсолютно одинаковое требование по ресурсам(RTTI и exceptions не в счет). Причины почему там С-файлы я уже назвал. Не только без RTTI и exceptions, но еще и без украшающий современный язык нововведений в виде лямбд и асинхронности. Не уверен, но подозреваю и без создания динамических объектов посредством "new" - потому что из 256 байт выкидывать что-то на обслуживание этой роскоши, та еще по паре байт на указатель довольно неразумно. И что остается от С++? - только привычка к С++-шной форме записи.
|
|
|
|
|
Sep 12 2016, 06:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата тот язык высокого уровня будет более удачен, который позволит реализовать любую конструкцию в машинных кодах. Это C++ и Rust  Цитата Очень просто: описанное Вами как преимущество запрет иметь два указателя на один объект - это всего лишь ограничение языка. А ограниченный в чем-то язык уже не сможет полноценно заменить язык без ограничений. Это не ограничение, это мера ради безопасности, заставляющая программиста работать в определенном стиле. Можно без проблем втулить unsafe-block, но если Ваша программа состоит из кучи unsafe-блоков, значит Вы делаете что-то не так - мало опыта. Аналогично, если в С++ у Вас куча reinterpret_cast - программа написана криво, а если там хоть один С-style cast, значит программу точно надо ставить на паузу и идти учить C++. Цитата А лямбды - это всего лишь стенография и не более. Даже лучше сказать "стенографические приемы" в языке. По сути как и "++". Многие считают лаямбды просто синтаксическим сахаром для функторов, но это нет так, они кардинально отличаются. Это все равно, что считать С синтаксическим сахаром для асма  (mov r0, r1 vs r0 = r1 ) Цитата Вообще-то полноценные динамические объекты винды и объекты ООП С++ никак не связаны. мелкософт даже просит не путать. Зато на плюсах реализуются гораздо проще и безопаснее, чем у этих линуксов и виндов на С. Цитата но еще и без украшающий современный язык нововведений в виде лямбд и асинхронности. Лямбда и асинхронный подход занимают на пюсах столько же ресурсов, сколько аналогичное решение займет на С, и то если грамотно и оптимально реализуете на С. Если нет, то на плюсах будет всегда оптимальнее(меньше памяти и проца). Цитата Не уверен, но подозреваю и без создания динамических объектов посредством "new" - потому что из 256 байт выкидывать что-то на обслуживание этой роскоши, та еще по паре байт на указатель довольно неразумно. Без динамического аллокатора ессно, зато с placement new - создание обьекта в статической памяти. Хоть и память статическая, но С++ рулит в полный рост - лямбды, шаблоны, виртуальные функции итд все работает как обычно. Мало того, компилятор делает огромную работу и постоянно проверяет программиста. Все мы люди и человеческий фактор работает у всех, компилятор уменьшает его влияние на скорость разработки. Цитата И что остается от С++? - только привычка к С++-шной форме записи. То же и по С можно сказать - при программировании на стольк крохотных девайсах на С вместо АСМа от С остается только привычка к С-шной форме записи. Тру программеры пишут только на АСМе(или в машинных кодах) и под каждый камень переписывают программу заново, делая все максимально оптимизировано под конкретный камень
|
|
|
|
|
Sep 12 2016, 06:36
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(aiwa @ Sep 12 2016, 04:17)  Опять Вы сравниваете один и тот же язык двух различных временных периодов. Человек младенческого возраста и взрослый человек имеют совершенно различные возможности. Асинхронность в С++ - это всего лишь следствие развития и доступности техники: многоядерность стала по карману обычному обывателю. А лямбды - это всего лишь стенография и не более. Даже лучше сказать "стенографические приемы" в языке. По сути как и "++". С-и - это встроенные малые системы. С++ - это коллективная разработка. Т.е. разница как между мягким и круглым. Время и развитие тут не причем. Асинхронность в C++ это не асинхронность в RTOS. Здесь просто народ путается. В C++ для ПК асинхронность это способ организации кооперативности. Вытеснения как не было так и нет, управления реальным временем тоже. "Асинхронность" С++ направлена на уменьшение отклика системы на действия пользователя. Пытаться её как-то приладить в embedded все равно что возвращаться в глубокую древность, когда люди еще программировали PIC-и. Такая же точно "асинхронность" есть и в Delphi. И те же лямбды есть. И шаблоны. И каким образом связана многоядерность и эта псевдо-асинхронность C++?
|
|
|
|
|
Sep 12 2016, 06:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата С-и - это встроенные малые системы. С++ - это коллективная разработка. На плюсах спокойно программирует один человек и код получается проще, чем сишный. Но это если этот человек имеет хороший опыт c++. Про асинхронность есть ветка про ССТ, там все показано на примерах, как работает асинхронный подход и какие его преимущества перед синхронным. Можете туда кидать и недостатки, очень желательно на реальных примерах кода, чтобы тема не превращалась в холивар.
|
|
|
|
|
Sep 12 2016, 07:35
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Сергей Борщ @ Sep 12 2016, 09:45)  Александр, прекращайте проповедовать свои заблуждения! Я не знаю вашего уровня владения C++, но подобные заявления заставляют думать, что уровень этот невысокий. Так зачем вы агитируете против того, в чем не разбираетесь? Так попробуйте дискутировать. Выложите на github свои проекты, покажите что разработали на C++ в одиночку. Сразу давить на образования это не серьезно. Я ж могу кучу коней в вакууме вывалить на C++ в доказательство своего уровня, как это делает наш уважаемый участник brag Но для меня доказательство только реальные рабочие проекты и только открытые.
|
|
|
|
|
Sep 12 2016, 07:56
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (AlexandrY @ Sep 12 2016, 10:35)  покажите что разработали на C++ в одиночку. Все свои проекты уже лет десять делаю на С++ и все в одиночку. Почему я должен отказываться от классов, перегрузки операторов, шаблонов, более строгой проверки типов и переходить обратно к "голым" Сям вы объяснить не можете. Отсюда я делаю вывод, что этих возможностей C++ вы просто не знаете. Потому что если бы знали - вы бы понимали, что они не приносят никаких накладных расходов во время исполнения программы, но при этом сильно облегчают труд программиста - на сях вы делаете то же самое, но вручную, а это куча лишней писанины и потенциальная возможность ошибок, хорошо если ошибок времени компиляции. Открывать свои проекты чтобы доказать что-то вам у меня нет никакого желания.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 13 2016, 02:59
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 12 2016, 09:19)  Это не ограничение, это мера ради безопасности, заставляющая программиста работать в определенном стиле. Причем тут стиль? Это тот случай, когда программисту нельзя доверить второй указатель. Говорит о силе языка или программиста?. Выросла производительность железа - появилась возможность организовывать системы выделения памяти со сборщиками мусора. Все трудоемкую работу с указателями выполнил какой-нибудь сулейман ибн оглы с Индии или Пакистана. Программистов становится все меньше - всех делают фокспрощниками. Цитата(brag @ Sep 12 2016, 09:19)  Многие считают лаямбды просто синтаксическим сахаром для функторов, но это нет так, они кардинально отличаются. Это все равно, что считать С синтаксическим сахаром для асма  (mov r0, r1 vs r0 = r1 ) Лямды имеют практический смысл для RT-компиляции: сгенерировали код, отработали его и потерли за ненадобностью, освободив память для другого. В С++ разница лишь в одном: оформит компилятор в виде вызова отдельной функции или сгенерирует "inline"-код. Цитата(brag @ Sep 12 2016, 09:19)  То же и по С можно сказать - при программировании на стольк крохотных девайсах на С вместо АСМа от С остается только привычка к С-шной форме записи. Ну так мы и вернулись к началу ветки. "С" лучше чем "Паскаль", потому что у "С" С-шная форма записи - но это сугубо личное мнение, основанное на привычке к этой форме записи. Для кого-то - наоборот, а кому-то вообще может быть по барабану. Для новичка С предпочтительней Паскаля по крайне мере из-за тотального распространения С. А противопоставление "С" и "С++" некорректно, потому что "С++" - это "С" (плюс еще что-то). Понятное дело, что это "еще что-то" за прошедших три десятка лет выливается в более удобную и быструю разработку.
|
|
|
|
|
Sep 13 2016, 05:43
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(andrew_b @ Sep 13 2016, 08:29)  Это разные языки. Валидный Си-код может быть невалидным Си++-кодом. Это так, но на самом деле это мелочь. Базовые различия не в синтаксисе, а в экосистеме. Я заметил что у нас основные агитаторы за C++ это пишущие в категории совсем мелких микроконтроллеров: STM8, PIC, MSP и т.д. Т.е. там где и писать то нечего. Отсюда и непонимание что на самом деле ускоряет разработку и что делает ее удобнее. А экосистема это окружающие микроконтроллерную платформу фреймворки стороннего софта. С++ для встраиваемых систем уровня Cortex-M по сути мертв. Тоже я скажу про С-и и Pascal для PC. Там им тоже места практически нет.
|
|
|
|
Guest_TSerg_*
|
Sep 13 2016, 07:20
|
Guests

|
Цитата(AlexandrY @ Sep 13 2016, 08:43)  Тоже я скажу про С-и и Pascal для PC. Там им тоже места практически нет. "Не судите по себе и не будете осудимы" (С) C и Object Pascal востребованы на PC-Win. Есть немало известных как крупных, так и мелких проектов. На моей практике вообще эта связка ( C - для математики и dll, а Delphi - как GUI + DB) - самое то. За более чем 20 лет использования Delphi ( начиная с 1995 г. и Delphi 1) ни разу не пожалел об этой "экосистеме". Для прикола у меня до сих пор стоит Delphi 2 и можно делать на ней почти все. http://shot.qip.ru/00gZ9L-3OPovQGDZ/На С и C++ тоже прошел длинный курс от С на CP/M 8р и далее до Watcom C, Intel C и пр. Watcom до сих пор для меня идеал (для тех лет). На Watcom много писал для Novell. Про Novell мало кто уже помнит, а ведь это была сетевая OS №1 ( Netware ). Много лет назад ( 16..18 - точно не помню) даже сделал Интернет-проект по сравнению компиляторов/интерпретаторов разных версий от производителей (Borland, Intel, Watcom, Microsoft, FreePascal, TMT, LCC/GCC, Phyton, JS) - тесты на математику, динамические структуры, тексты и т.д. Результаты были очень интересны для специалистов. Скриншоты: http://shot.qip.ru/00gZ9L-3OPovQGE1/http://shot.qip.ru/00gZ9L-6OPovQGE2/P.S. Недавно полюбопытствовал Rust - неоднозначное пока отношение, но интересно. На мой взгляд, все же не соблюдено требование №1 о безопасности, поскольку опять есть небезопасные возможности и много отступлений от привычного синтаксиса уже существующих языков.
|
|
|
|
|
Sep 13 2016, 09:18
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(andrew_b @ Sep 13 2016, 08:29)  Это разные языки. Валидный Си-код может быть невалидным Си++-кодом. Не придирайтесь. Писал по памяти, вот написал "что-то". проверил оказалось первоначально он назывался "С с классами". Позже это коряво-нежизнеспособное название было заменено на "С++", что в переводе с авторского означает "усовершенствованный С". Для того, чтобы понять, что старый "С" и новый "С++" разные языки, даже валидность кода не стоит сравнивать - об этом говорит сам факт существования двух стандартов. Но в контексте данной ветки (Pascal или С++) это несущественно. Само сравнение "С" и "усовершенствованного С" среди разработчиков - дело бесполезное. Использование усовершенствованного всегда удобнее и приятнее. Но у legacy-C есть все же неоспоримое преимущество перед С++: там уже все вылизано проверено и посыпано песком. Цитата(Kabdim @ Sep 13 2016, 11:59)  Вы никогда не делали глупых ошибок с указателями? Модификатор const выброшен вами за ненадобностью?  Вообще да, говорит. Эти ограничения - меседж от разработчиков языка и компилятора "подумай еще раз, с большой вероятностью ты готовишь выстрел в ногу". Естественно делал, тем более имея привычку новый код получать редактированием копипаста. Но получал аналогичный месседж от компилятора, который все же не делает ограничений. Чаще при копипасте возникает ошибка сравнения в виде присваивания, либо наоборот. Так и в этом случае компилятор выдает предупреждение.
Сообщение отредактировал aiwa - Sep 13 2016, 09:18
|
|
|
|
|
Sep 13 2016, 09:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Kabdim @ Sep 13 2016, 11:59)  Эти ограничения - меседж от разработчиков языка и компилятора "подумай еще раз, с большой вероятностью ты готовишь выстрел в ногу". О чем простите думать, если Вы говорите об ОГРАНИЧЕНИИ, а не предупреждении? Ограничение означает, что не сможете этим, одним из миллионов вариантов, повредить себе ногу. Заодно не сможете вообще воспользоваться витовкой для любых других целей. Какое относительно счастье. Спасибо разработчикам компиляторов за наше счастливое детство. Есть и целые толпы борцов с ветряными мельницами и в Си, например, благодеятели от MISRA, но это все же НЕ ОГРАНИЧЕНИЯ, а "предупреждения".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 13 2016, 10:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Причем тут стиль? Это тот случай, когда программисту нельзя доверить второй указатель. Говорит о силе языка или программиста?. Выросла производительность железа - появилась возможность организовывать системы выделения памяти со сборщиками мусора. Есть класс задач, где сборщик мусора не уместен, но они чем раз тем сложнее, и тут на помощь приходят всяки плюсы и расты, которые уменьшают человеческий фактор и делают разработку более быстрой и комфортной. Но изучать новый стиль придеться, легкого пути нет. Цитата Это так, но на самом деле это мелочь. Это мелочь для крохотных проектов, а если там хотя бы 200к строк кода, тогда портировать такой код на плюсы будет не просто. Цитата Вы никогда не делали глупых ошибок с указателями? Модификатор const выброшен вами за ненадобностью? sm.gif Глупые ошибки это одно, а когда проект очень сложный - ошибку допустить будет очень легко, а найти и тем более исправить - очень сложно, возможно для этого придется переписать тонну кода. Вот тут и помогает компилятор(то есть язык с его правиалми), который заставляет писать "нормальный" код сразу. Цитата Но получал аналогичный месседж от компилятора, который все же не делает ограничений Сишному да и плюсовому компилятору очень далеко до того, что умеет проверять компилятор Rust. И дело тут не в крутости компилятора последнего, а в другом стиле программирования. Ни сишный, ни плюсовый стиль не позволяет выполнить необходимые проверки. Но это не значит, что нельзя пользоваться винтовкой - да запросто- пишете код в ансейф блоке, можете хоть всю программу там написать, если знаний и опыта программирования в данном стиле нет, и потом обязательно скажете, что эти все расты и плюсы ничем не лучше обычного С  Все, кто гонит на С++ и другие высокоуровневые языки или на какой-то непривычный для них стиль(тот же асинхронный) - просто не умеют на них программировать, просто не имеют достаточных современных знаний и опыта, и предпочитают все делать по старинке привычным для них способом  Это все равно что сравнивать стамеску, молоток и топор с много-осевым ЧПУ станком
|
|
|
|
Guest_TSerg_*
|
Sep 13 2016, 10:45
|
Guests

|
Видал я эти "многоосевые", после которых рыдать хочется. В итоге берешь молоток и зубило, идешь эффективным путем и получаешь годами работающее изделие без обслуживания.
|
|
|
|
|
Sep 13 2016, 12:19
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Цитата(zltigo @ Sep 13 2016, 12:49)  О чем простите думать, если Вы говорите об ОГРАНИЧЕНИИ, а не предупреждении? Ограничение означает, что не сможете этим, одним из миллионов вариантов, повредить себе ногу. Заодно не сможете вообще воспользоваться витовкой для любых других целей. Какое относительно счастье. Спасибо разработчикам компиляторов за наше счастливое детство. Есть и целые толпы борцов с ветряными мельницами и в Си, например, благодеятели от MISRA, но это все же НЕ ОГРАНИЧЕНИЯ, а "предупреждения". Можно поинтересоваться с каким настройками предупреждений вы компилируете и исправляете ли все предупреждения? В расте декларируется простая вещь - гарантированная безопасность данных, пока вы в рамках наложенных ограничений. Если вам не нравится ограничения, то можно пользоваться "unsafe {...}" и не получать этих гарантий. Мне наоборот нравится идея что пока я в рамках правил язык даёт мне такие гарантии, в отличии от нашего любимого C в котором неосторжная опечатка может привести к трудно отлавливаемой катастрофе. Насчёт ограниченности инструмента вы неаргументированно утверждаете что что-то сделать невозможно. Разумеется там где нужно используется"unsafe {...}" с ручной верификацией, в библиотеке самого раста немало примеров. Но для большинства применений отступать от этих правил не требуется, а профит от гарантий встроенных в язык остается. Я бы предпочел поспорить аргументированно, но т.к. у меня (и скорее всего у вас) нет опыта использования раста, то спор выйдет ущербный.
|
|
|
|
|
Sep 13 2016, 12:58
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Kabdim @ Sep 13 2016, 15:51)  Т.е. если прямо сейчас включить опцию treat warning as error - то ничего не поменяется? Ничего. QUOTE Ну вот раст это постоянно включенная опция. Вопрос в том, что относится к наказуемым предупреждениями вещам. В случае текущих сишных компилятров все уже достаточно сбалансировано, хотя, например, у того-же массовейшего GCC, пожалуй набор предупреждений относительно мал. Расширять-же количество warnings уже представляется достаточно бессмысленным. Но если хотите, то так-же MISRA Вам с радостью их накидает, как с бодуна  и мало не покажется.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 13 2016, 14:02
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 13 2016, 13:06)  Все, кто гонит на С++ и другие высокоуровневые языки .... Так Вы же первый и "гнали" на С++, рекламируя Rust ему на замену. Поначалу я усомнился в его способности заменить С++, исходя из Вашего описания ограничения на свободу с указателями. Ради интереса заглянул к ним на страничку, ну разбавили они взятый за основу С-шный синтаксис паскалеобразностью, да еще приплели в него восторженности. Не прельщает, шарп или ява и то приятней.
|
|
|
|
|
Sep 13 2016, 14:50
|

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(andrew_b @ Sep 13 2016, 08:29)  Это разные языки. Валидный Си-код может быть невалидным Си++-кодом. Какие конструкции или ключевые слова из языка С компилятор С++ не поймёт? Кто нибудь знает хоть один чисто си современный компилятор? Например я С++ называю просто си, без всяких ++. Все знакомые кто в теме тоже говорят просто "сишка" или "писал на сях" и все имеют ввиду С++.
|
|
|
|
|
Sep 13 2016, 15:19
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Цитата(aiwa @ Sep 13 2016, 17:02)  Так Вы же первый и "гнали" на С++, рекламируя Rust ему на замену. Поначалу я усомнился в его способности заменить С++, исходя из Вашего описания ограничения на свободу с указателями. Ради интереса заглянул к ним на страничку, ну разбавили они взятый за основу С-шный синтаксис паскалеобразностью, да еще приплели в него восторженности. Не прельщает, шарп или ява и то приятней. Дык, последние по такой логике - тот же самый си, только чего-то там добавили, приплели, восторженность всякая и т.д. Синтаксис не главная часть языка... даже близко.
|
|
|
|
|
Sep 13 2016, 15:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Так Вы же первый и "гнали" на С++, рекламируя Rust ему на замену. Поначалу я усомнился в его способности заменить С++, исходя из Вашего описания ограничения на свободу с указателями. Ради интереса заглянул к ним на страничку, ну разбавили они взятый за основу С-шный синтаксис паскалеобразностью, да еще приплели в него восторженности. Не прельщает, шарп или ява и то приятней. Имелось в виду гонят на более высокоуровневые(такие как плюсы, или еще более высокоуровневый раст, или JS) в пользу более низко-уровневых типа С или паскаля. У раста такой синтаксис не случайно возник, а из за того, чтобы он был растом, чтобы программист привыкал к определенному стилю и технике. И ява или шарп ему не конуренты, у них своя ниша, у раста своя. Например на яве Вы не сможере писать под Atmega8, а на расте - запросто. Любое высокоуровневое программирование - это набор определенных ограничений и правил. И чем выше уровень, тем их больше. Даже в ассемблера есть правила, тк он более высокоуровневый, чем машинный код. В машинном коде ограничений нет - пиши что хочешь и никакой компилятор тебе ничего не запретит, тк компилятора нет  Цитата Какие конструкции или ключевые слова из языка С компилятор С++ не поймёт? Да запросто, вот выдрал из реального коммерческого проекта. Попробуйте скомпилируйте этот код стандартным плюсовым компилятором. Стандарт С++(даже 17й) этого не поддерживает, поэтому приходится делать на С. Код typedef void (*t_ISR)(void);
typedef const struct{ //... t_ISR tim6; // 54 0x00000118 TIM6 global interrupt //... } t_Ivectors;
//.... void iTim6(void); //..... __section(".ivectors") t_Ivectors iVectors={ .tim6=iTim6 //.... };
|
|
|
|
|
Sep 13 2016, 16:51
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Den64 @ Sep 13 2016, 17:50)  Какие конструкции или ключевые слова из языка С компилятор С++ не поймёт? Ну, например const у глобальных переменных, глобальные переменные с одинаковыми именами без extern в разных единицах трансляции. Оно откомпилируется, но не слинкуется. QUOTE (Den64 @ Sep 13 2016, 17:50)  Кто нибудь знает хоть один чисто си современный компилятор? SDCC. QUOTE (Den64 @ Sep 13 2016, 17:50)  Например я С++ называю просто си, без всяких ++. Все знакомые кто в теме тоже говорят просто "сишка" или "писал на сях" и все имеют ввиду С++. Угу: QUOTE -Могу ли я называть себя линуксоидом, если у меня на телефоне установлен Линукс? -Ты себя еще связистом назови - у тебя же телефон!
(сперто откуда-то)
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Guest_TSerg_*
|
Sep 13 2016, 17:27
|
Guests

|
В Rust вообще есть очень "приятная" штука, причем вне блока unsafe - "затенение" переменной. После такого так и хочется вспомнить какой-либо бейсик.. Я даже представить не могу, чтобы где-то в программе мне захотелось переменную в пределах видимости переделать в переменную другого типа. Да и вообще, в части терминологии, в Расте столько занятного, что слова порой заканчиваются.
fn main() { println!("Shadowing!");
let mut x: i32 = 5; // это изменяемая переменная. Если Вы не знали, что переменные могут быт неизменяемыми - Вы Раст не видели. println!("x = {}", x);
x = 7; // допустимо присвоение значения println!("x = {}", x);
let x: i32 = 8; // тут мы говорим, что x уже неизменяемая переменная - нормально, да? println!("x = {}", x);
x = 9; // увы - низя присвоить println!("x = {}", x);
let x = "Затенение"; // ха-ха - "затеняем" i32 в String println!("x = {}", x);
} // main
|
|
|
|
|
Sep 13 2016, 18:08
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(TSerg @ Sep 13 2016, 10:45)  Видал я эти "многоосевые", после которых рыдать хочется. Бывает, но не все же так ужасно - Не понимаю чего так все все восхищаются Карузо. Слуха у него нет, голоса нет, картавит, шепелявит, фальшивит... - А где ты его слышал? - Да Рабинович вчера напел.
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Sep 13 2016, 19:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата В Rust вообще есть очень "приятная" штука, причем вне блока unsafe - "затенение" переменной. После такого так и хочется вспомнить какой-либо бейсик.. Я даже представить не могу, чтобы где-то в программе мне захотелось переменную в пределах видимости переделать в переменную другого типа. Это классная фишка(это такой вид полиморфизма), мне ее не хватает в плюсах, тулить вложенные блоки - это костыли да и поведение совсем не такое. Когда-то(а многие и до сих пор) сишники не понимали зачем переменные обьявлять посреди функции а, не в начале. Хотя в плюсах без этого просто невозможно программировать. Это я к тому, что язык тут другой и привычный сишный или даже плюсовый стиль здесь, мягко говоря, не катит. Цитата Да и вообще, в части терминологии, в Расте столько занятного, что слова порой заканчиваются. Да, очень мощный и сложный язык. От людей, которые имеют хороший опыт программирования на нем и плюсах слышал только положительные отзывы(в том числе в сравнении с плюсами), сам пока оценку дать не готов, дам через пол года, как напрактикуюсь немного.
|
|
|
|
|
Sep 14 2016, 00:39
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Kabdim @ Sep 13 2016, 18:19)  Дык, последние по такой логике - тот же самый си, только чего-то там добавили, приплели, восторженность всякая и т.д. Синтаксис не главная часть языка... даже близко. Так не с бухты-барахты написал, а посмотрел на примеры программ. Первое, что бросилось в глаза - изобилие восклицательных знаков, прям не программа. а обращение ЦК КПСС к народу по случаю очередной годовщины. Но после общепризнанного ошибочного включения 'println' в Паскаль, writeln намекает, что разработчикам в детстве сильно нравился Васик. Синткасис в соновном сишный, слегка разбавленный паскалеобразными объявлениями типов. Пробежался наискось по оглавлению документации - что-то напоминает очередной язык, который позиционируется как самый быстрый системный язык, который по сложившейся традиции тащит всякий непотреб в виде динамического типов или встроенной потокобезопасности. По сути язык программирования, можно сравнить с конструктором лего, где его элементы соответсвуют одной или нескольким машинным командам, либо сравнительно небольшому набору (пролог, эпилог функций, фрейм стека для доступа к локальным переменным и прочее). И чем полнее коллекция таких элементов тем богаче язык. Это такие языки как к примеру тот же С/С++ или Объект-Паскаль. "Богатые возможности" языков в виде "управляемой памяти" или "динамических типов", это уже увесистые кирпичи в таком конструкторе. Причем ирония состоит в том, что апологеты таких языков еще утверждают что частое использование reinterpret_cast - плохой стиль программирования, хотя сами употребляют его перманентно по умолчанию, скрыв от программиста. Поэтому утверждения о силе и мощи этих языков все же спорны. Как по мне, язык без кирпичей и гибче и богаче, и отличаются такие языки лишь синтаксисом.
|
|
|
|
|
Sep 14 2016, 01:51
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Глупо давать оценку столь сложному языку, просто пробежавшись по оглавлению, не написав на нем ни одной более-менее серьезной программы. Цитата Причем ирония состоит в том, что апологеты таких языков еще утверждают что частое использование reinterpret_cast - плохой стиль программирования, хотя сами употребляют его перманентно по умолчанию, скрыв от программиста. Плохой стиль программирования - это ручное приведение типов, но никак не автоматическая типизация. В ручном приведении, особенно таком, как reinterpret_cast, а хуже того - C-cast ни компилятор, ни рантайм не знают что там к чему приводится и как, вся ответственность лежит на программисте. А в автоматическом преобразовании типов всем рулит автомат(а не человек), который и отвечает за корректность работы этого механизма. Динамическая типизация - это динамический полиморфизм - очень мощная техника на нынешнее время, без нее сейчас никак. Цитата Как по мне, язык без кирпичей и гибче и богаче, и отличаются такие языки лишь синтаксисом. Самый богатый язык и без кирпичей вообще - это машинный код. Без запретов, без ограничений, без правил.
|
|
|
|
|
Sep 14 2016, 03:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Золотая середина это такая, где программист и процессор делают минимум работы, а компилятор - максимум. Но и тут приходится искать середину, отдавая доп. работу либо процессору, либо компилятору, либо программисту, иначе программы либо очень тормозят, либо очень долго пишутся и долго ищутся и правятся баги, либо очень долго компилируются. Задача современных языков - как раз таки найти эту середину и каждый язык решает ее по своему, и не каждое такое решение подходит под конкретную задачу или конкретному программисту. Многие настолько зависимы от С, что даже плюсы им не под силу, не говоря уже про другие языки со слегка другим синтаксисом, он им гораздо важнее других вещей. Я их понимаю, сам такой, но все равно пытаюсь осваивать.
|
|
|
|
|
Sep 14 2016, 07:28
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 14 2016, 04:51)  Глупо давать оценку столь сложному языку, просто пробежавшись по оглавлению, не написав на нем ни одной более-менее серьезной программы. Та я не языку даю оценку, а мне непонятна Ваша подача материала: почему у Вас С++ и Rust парой ходят. Они же принципиально совершенно разные. Пожалуй даже диаметрально противоположные. Цитата(brag @ Sep 14 2016, 04:51)  Динамическая типизация - это динамический полиморфизм - очень мощная техника на нынешнее время, без нее сейчас никак. Опять рекламный слоган. Давайте уж своими словами: динамическая типизация - это прежде всего накладные расходы из-за оформления базовых типов в виде классов из-за неизбежной необходимости табличной обработки операций с ними. Это далеко не ново, и вообще не прогрессивно. "Безоасный код" или "чистый код" - это не улучшение языка, это удешевление последующей разработки программ. Цитата(brag @ Sep 14 2016, 04:51)  Самый богатый язык и без кирпичей вообще - это машинный код. Без запретов, без ограничений, без правил. Машинный код, то бишь ассемблер, - это не богатый и не бедный язык, он - единственный для выбранного процессора. И все остальные языки неизбежно к нему приходят, только некоторые, особо пекущиеся о здоровье программиста, слишком окольными путями. Это еще одно замечательное свойство С/С++: за ним всегда приблизительно видны те ассемблерные квантики, которые он будет генерировать.
|
|
|
|
|
Sep 14 2016, 08:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Та я не языку даю оценку, а мне непонятна Ваша подача материала: почему у Вас С++ и Rust парой ходят. Они же принципиально совершенно разные. Пожалуй даже диаметрально противоположные. Потому что это пока единственные обьектные языки, позволяющие программировать на голом железе. Чем больше я изучаю раст, тем больше мне он кажется лучше плюсов. Но это только кажется, оценку я ему смогу дать, и то сугубо личную только тогда, когда сделаю на нем какой нибудь более-менее серьезный проект. Цитата Давайте уж своими словами: динамическая типизация - это прежде всего накладные расходы из-за оформления базовых типов в виде классов Точно такие же расходы(или больше) будут, если эту динамику сделать вручную на С или на асме. А там, где рантайм-поддержка на нужна - компилятор все сделает сам и дотошно проверит программиста, чтобы последний не тупанул, или уменьшит вероятность тупняка. Цитата Машинный код, то бишь ассемблер, - это не богатый и не бедный язык, он - единственный для выбранного процессора. Машинный код богаче ассемблера, он позволяет сделать то, что не позволяет ассемблер (например выполнить недокументированную инструкцию процессора). А ассемблер богаче С, потому что на нем можно сделать то, что нельзя на С - вызывать строго определенные инструкции(документированные) проца в строго определенном порядке.
|
|
|
|
|
Sep 14 2016, 08:47
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 14 2016, 11:08)  Потому что это пока единственные обьектные языки, позволяющие программировать на голом железе. Чем больше я изучаю раст, тем больше мне он кажется лучше плюсов. Согласитесь, что про программирование меги на расте Вы слегка погорячились. Цитата(brag @ Sep 14 2016, 11:08)  Точно такие же расходы(или больше) будут, если эту динамику сделать вручную на С или на асме. Вы опять уводите в сторону: на С/С++ эту динамику не нужно делать, потому что он не поддерживает динамическую типизацию принципиально. Динамическая типизация позволяет сделать короче исходный текст программы за счет увеличения рабочего кода и скорости выполнения. Сомнительное удовольствие. Я уж лучше напишу имя второй переменной. Цитата(brag @ Sep 14 2016, 11:08)  Машинный код богаче ассемблера, он позволяет сделать то, что не позволяет ассемблер (например выполнить недокументированную инструкцию процессора). А ассемблер богаче С, потому что на нем можно сделать то, что нельзя на С - вызывать строго определенные инструкции(документированные) проца в строго определенном порядке. У ассемблера предусмотрена возможность непосредственной вставки (DB, DW) не только недокументированной инструкции, но и даже отсутствующей в машинном коде инструкции, если вдруг такая бы появилась. Не проще ли считать ассемблер просто машинным кодом та и все.
Сообщение отредактировал aiwa - Sep 14 2016, 08:47
|
|
|
|
|
Sep 14 2016, 09:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Согласитесь, что про программирование меги на расте Вы слегка погорячились. https://github.com/avr-rust/rust https://github.com/avr-llvm/llvm пока что криво и с напильником, но работает. Москва тоже не сразу строилась Цитата Вы опять уводите в сторону: на С/С++ эту динамику не нужно делать, потому что он не поддерживает динамическую типизацию принципиально. Динамическая типизация позволяет сделать короче исходный текст программы за счет увеличения рабочего кода и скорости выполнения. Сомнительное удовольствие. Я уж лучше напишу имя второй переменной. Можно пример кода? а то я на пальцах плохо понимаю. Цитата У ассемблера предусмотрена возможность непосредственной вставки (DB, DW) не только недокументированной инструкции, но и даже отсутствующей в машинном коде инструкции, если вдруг такая бы появилась. Не проще ли считать ассемблер просто машинным кодом та и все. В С++ тоже можно делать вставки ассемблерного и машинного кода, но С++ нельзя назвать ни ассемблером, ни машинным кодом  Делая такую вставку Вы уже пишете не на С++, а на ассемблере или на машинном коде  Я такие вставки и сам иногда делаю, но по возможности стараюсь избегать. У ассемблера есть компилятор, который программиста уже проверяет, а у машинного кода и этого нет.
|
|
|
|
|
Sep 14 2016, 14:01
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(brag @ Sep 14 2016, 12:08)  пока что криво и с напильником, но работает. Москва тоже не сразу строилась. Судя по конфигурационному файлу пока еще не криво: бэкенд-компилятор стандартный LLVM, а фронт-енд компилятор - СLang или GCC. Таким макаром можно писать для AVR хоть на турецком. Посмотрим, когда построится Москва, сколько прогрессивного будет зарублено и насколько он будет отличаться от собратьев. Цитата(brag @ Sep 14 2016, 12:08)  Можно пример кода? а то я на пальцах плохо понимаю. Берем пример из раста подаваемый динамическое типизирование как прогрессивное преимущество: { а = 5; // это тип u32 a = "abcd"; // а это та же переменная, но имеющая совершенно другой тип. } с С++ уже надо вводить другую переменную: { u32 а = 5; // это тип u32 char b[] = "abcd"; // } C++ выделяет в фрейме стека 4 байта для переменной а и на этом накладные расходы заканчиваются. Информацию об "а" он хранит во время компиляции и просто генерирует команды 32-битной обработки. Раст же поместит в 4-байта в стеке указатель на участок памяти, который содержит непосредственно саму переменную "а", и информацию о ее типе, скорее всего в виде таблицы вызовов кода команд 32-ти битной обработки. Грубо говоря оформление типа u32 в виде класса с виртуальными функциями базовых операций 32-х разрядной арифметики. Поэтому вместо одной ассемблерной команды для a+=5 в случае статического типизирования, раст вынужден будет выполнять call или jump на эту функцию сложения u32-типа. Могу ошибаться, но мелкософтные делфи, которые обозвали шарпом делают именно так: Все типы происходят от одного предка. Оставленные для совместимости "int" да "char" соответствуют классам TInt и TChar. И запись "int a = 5" означает "создать в управляемой куче объект класса Tint и инициализировать его 5." Названия, естественно, условны - передана лишь суть. Цитата(Kabdim @ Sep 14 2016, 12:24)  aiwa, ну вы всё таки рубите с плеча, не разобравшись. Нельзя так, если конечная цель что-то отличное от флейма. Так вроде бы и не сплеча: предварил, что языка не знаю и оцениваю только синтаксис. Причем такая оценка априори субъективна. Выделение макроса все-таки, наверное, преимущество. Но вот выбор восклицательного знака мне кажется неудачным. Все-таки стоит учитывать человеческий фактор.
Сообщение отредактировал aiwa - Sep 14 2016, 13:48
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|