2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение09.02.2014, 15:41 


05/09/12
2587
Желающие не только высказать свое мнение, а еще и узнать, как оно на самом деле, могут посетить специализированные форумы.
На ассемблере пишется сейчас крайне незначительная часть кода для МК, в основном на С. Использование ассемблера должно быть оправдано. На асме, например, я писал код, который должен выполняться блоками строго определенное количество тактов процессора, для точного замера времени, и т.п. задач, что не гарантирует Си. Для других задач, еще нужно постараться переплюнуть компилятор с оптимизаций, генерируя ассемблерный код. Хотя, немало и тех, кто пишет на С, потом допиливает напильником сгенерированный компилятором ассемблерный код, и сдает заказчику именно последний :lol:
С становится на МК, у которого есть хоть капелька ОЗУ, а есть простейшие МК только с флешем, регистрами и может быть ЕЕПРОМом. Но и на такие МК вполне влезают именно ассемблерные стандартные библиотеки, от арифметики плавающей запятой в формате IEEE 754 или другом, и прочие функции.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение09.02.2014, 16:20 


27/11/10
206

(Оффтоп)

bin в сообщении #824466 писал(а):
Cредства для многопоточности, например, это не НЕстандартные библиотеки: мьютексы и семафоры - стандарные приемы параллельного программирования вне зависимости от языка и платформы. В отличие от Delphi в С++ с этим проблемы, поэтому сделали костыль TBB.

Начиная со стандарта 11 года в STL включена поддержка потоков и многопоточного программирования. Реализация конкретной многопоточной модели зависит от библиотеки. И этих библиотек очень много: boost, TBB, POSIX threads, Qt...

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 16:32 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
x51 в сообщении #824251 писал(а):
Если человек научился программировать на С, то он без большого труда выучится и на Паскале, на С++ и на всем таком прочем.
Если человек выучил один язык программирования, он всегда выучит любой другой.

x51 в сообщении #824251 писал(а):
Вообще C или Pascal это знаменитый холивар. Я вам одно скажу: программист знающий паскаль может найти только одну специальность: учитель информатики. И то, если осилит педагогический.
В современном прикладном программировании гораздо большее значение имеет знание смежных вещей: предметной области, баз данных, веб-технологий и пр. Знания в "глубину" (алгоритмы всякие и т. д.) мало нужны, так как все уже давно реализовано в тех же базах данных, наборах компонентов в разных IDE и т. п.
А конкретно для любителей паскаля существует PL/SQL 8-)

x51 в сообщении #824251 писал(а):
P.S. паскаля не знаю, и не знал никогда. да и не узнаю видимо.
"Не читал, но осуждаю"? :wink:

А еще непонятно, что является принципиальным отличием? Уж как по мне, принципиальных отличий у них нет никаких. Принципиально отличаются от Си и паскаля языки с принципиально другим назначением - функциональные языки, или например, тот же PL/SQL.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 16:39 
Заслуженный участник


09/09/10
3729
PL/SQL — для любителей Кобола.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 18:02 


24/05/09

2054
rockclimber в сообщении #824908 писал(а):
А еще непонятно, что является принципиальным отличием? Уж как по мне, принципиальных отличий у них нет никаких. Принципиально отличаются от Си и паскаля языки с принципиально другим назначением - функциональные языки, или например, тот же PL/SQL.

Тем не менее, Си победил Паскаль.

А что даёт проверка выхода за границы массива во время выполнения? Ессно уменьшение быстродействия. Более удобную отладку - правильно написанная прога перед смертью выдаст табличку с причиной краха. Для конечного пользователя это мало что значит: какая разница, программа тихо умрёт или перед смертью выдаст: "произошло обращение по некорректному адресу 0000:0256"? Это программисту только интересно.

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

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 20:11 
Заслуженный участник


09/09/10
3729
Alexu007 в сообщении #824946 писал(а):
даже специальные ключи есть, позволяющие при окончательной компиляции игнорировать отладочный код.

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

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 20:33 


24/05/09

2054
Joker_vD в сообщении #825005 писал(а):
Это вершина идиотизма, на мой взгляд — убирать ремни безопасности там, где они нужнее всего. Это, блин, как учиться плавать в резиновом бассейнчике во дворе у дома, надев спасательный жилет, а потом, убедившись, что вроде бы нормально держишься, снять его и пойти переплывать Днепр в грозу.

Какие ремни безопасности? Они что, помогут аварийной программе продолжить выполнение и получить правильный результат - т.е. ремни безопасности помогут выжить? Да ничего подобного. Они только разработчику программы могут подсказать, где ошибка, из-за чего программа свалилась. Юзеру они 100% бесполезны.

P.S. То-то иногда при крахе программы окошко выскакивает: "попытка чтения/записи по адресу ...". Ну очень помогает!

P.SS. Если окошко ещё пишет типо "ошибка 234", и у программиста есть список, что это и где это - тогда хоть в отладке поможет. Информация "обращение по адресу XXXX:YYYY" ессно в ексешнике - практически бесполезна и программисту. Паскаль случаем не так пишет?

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 20:51 
Заслуженный участник


09/09/10
3729
Alexu007 в сообщении #825018 писал(а):
Какие ремни безопасности? Они что, помогут аварийной программе продолжить выполнение и получить правильный результат - т.е. ремни безопасности помогут выжить? Да ничего подобного. Они только разработчику программы могут подсказать, где ошибка, из-за чего программа свалилась. Юзеру они 100% бесполезны.

Во-первых, они помогут аварийной программе упасть аккуратно — и, возможно, не упасть вовсе. Одно дело — попытка записи мимо индекса, которая перехватывается до собственно записи, стек раскручивается, откатываются транзакции в БД, после чего пользователю сообщается, что вон та операция, которую он попытался выполнить, реализована криво... но ничего не испортилось, поэтому он сейчас может спокойно работать дальше. И совсем другое — когда из-за мелкой ошибки в написанной вами динамической библиотеке падает весь процесс, в котором крутятся еще четыре сетевых демона, к вам не относящиеся, и в четырех БД (тоже не ваших) появляются подвисшие транзакции. Да, они сбросятся и откатятся через пол-минуты, но осадок-то остается.

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

Alexu007 в сообщении #825018 писал(а):
Информация "обращение по адресу XXXX:YYYY" ессно в ексешнике - практически бесполезна и программисту.

Если вы не умеете пользоваться отладчиком — то да, вам она бесполезна.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:04 
Аватара пользователя


08/02/14
53
Серпухов, Россия
Joker_vD в сообщении #825005 писал(а):
Alexu007 в сообщении #824946 писал(а):
даже специальные ключи есть, позволяющие при окончательной компиляции игнорировать отладочный код.

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


Надо понимать что пишешь. И не "прострелить себе ногу".

rockclimber в сообщении #824908 писал(а):
В современном прикладном программировании гораздо большее значение имеет знание смежных вещей: предметной области, баз данных, веб-технологий и пр. Знания в "глубину" (алгоритмы всякие и т. д.) мало нужны, так как все уже давно реализовано в тех же базах данных, наборах компонентов в разных IDE и т. п.

Не везде, скажу я вам, используются IDE и базы данных, бывает что остаешься наедине с компашкой: ты, микроконтроллер и компилятор. Это вам не IDE c его автоматическими трансляторами, которые замусоривают код просто до такой степени, что на слабых платформах он еле ворочается. поэтому мой выбор таков: vim и gcc, остальное лишнее.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:22 


27/11/10
206

(Оффтоп)

x51 в сообщении #825035 писал(а):
Не везде, скажу я вам, используются IDE и базы данных, бывает что остаешься наедине с компашкой: ты, микроконтроллер и компилятор. Это вам не IDE c его автоматическими трансляторами, которые замусоривают код просто до такой степени, что на слабых платформах он еле ворочается. поэтому мой выбор таков: vim и gcc, остальное лишнее.

Как IDE могут замусоривать код? IDE это только продвинутый текстовый редактор с дополнительными фичами в виде отладчика, средств автоматической сборки, CVS...

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:34 


24/05/09

2054
Joker_vD в сообщении #825028 писал(а):
Если вы не умеете пользоваться отладчиком — то да, вам она бесполезна.

Отладчиком на уровне машинных кодов - каюсь, не умею.

Допустим, мы записываем что-либо в A[B]. Ошибка возникает, когда в переменную B помещается неправильное значение, а обнаруживается в лучшем случае (в Паскале?), когда мы пробуем записать/прочитать в A[B]. В худшем - ещё дальше. Но всё равно не тогда, когда она действительно возникает - в результате неправильного вычисления значения B

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:38 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Я не помню, как в Паскале обрабатываются присваивания интервальным типам, возможно, если правильно объявлять типы индексов, отловится как раз там, где Вы сказали.

Моя мечта, конечно, чтобы в несложных случаях оно отлавливалось на этапе компиляции.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:53 


27/11/10
206
Xaositect в сообщении #825049 писал(а):
Моя мечта, конечно, чтобы в несложных случаях оно отлавливалось на этапе компиляции.

А для этого существуют статические анализаторы кода :wink:

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 21:59 
Заслуженный участник


09/09/10
3729
x51 в сообщении #825035 писал(а):
Надо понимать что пишешь. И не "прострелить себе ногу".

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

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

Alexu007 в сообщении #825047 писал(а):
Допустим, мы записываем что-либо в A[B]. Ошибка возникает, когда в переменную B помещается неправильное значение, а обнаруживается в лучшем случае (в Паскале?), когда мы пробуем записать/прочитать в A[B]. В худшем - ещё дальше. Но всё равно не тогда, когда она действительно возникает - в результате неправильного вычисления значения B

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

x51 в сообщении #825035 писал(а):
vim и gcc, остальное лишнее.

...вы прямо на контролере запускаете vim, что ли? Обычно такие штуки пишут на нормальном компьютере, в нормальном редакторе, а потом кросс-компилируют.

Xaositect в сообщении #825049 писал(а):
Моя мечта, конечно, чтобы в несложных случаях оно отлавливалось на этапе компиляции.

H. Xi, F. Pfenning "Eliminating Array Bound Checking Through Dependent Types". В целом, там рисуется система линейных неравенств и решается в целых числах.

 Профиль  
                  
 
 Re: В чём принципиальная разница между языками С и Паскаль?
Сообщение10.02.2014, 22:01 
Заслуженный участник


28/04/09
1933
Taus в сообщении #825057 писал(а):
Xaositect в сообщении #825049 писал(а):
Моя мечта, конечно, чтобы в несложных случаях оно отлавливалось на этапе компиляции.
А для этого существуют статические анализаторы кода :wink:
Для этого существуют языки с поддержкой зависимых типов или нечто подобное.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Dmitriy40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group