Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Pascal для AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
tyro
bb-offtopic.gif
Паскаль не является под(над)множеством языка СИ, это другой язык программирования, и подходы к решению одинаковых задач у них могут быть разными.
Цитата(777777 @ Dec 8 2008, 16:35) *
Вот например, недавно узнал, что оказывается внутри скобок begin-end нельзя объявлять локальные переменные. ....

Если дальше почитаете по языку паскаль, то найдете еще и другие отличия. smile.gif
Цитата
С чего Вирт решил, что...

Это Вам бы надо спросить непосредственно, а заодно наставить его на путь истинный, что и как надо делать. biggrin.gif
Цитата(ARV @ Dec 10 2008, 11:17) *
... smile.gif не правда ли, все это вызывает смех сейчас, когда хелловорд на любом языке перевалил за сотню килобайт ... smile.gif

Не совсем так, на Delphi7 - 42 496 байт, на Delphi2009 - 87 552 байт, так что прогресс на лицо. smile.gif bb-offtopic.gif
ukpyr
Цитата
Паскаль не является под(над)множеством языка СИ, это другой язык программирования
спорное утверждение.
lisp, prolog, forth и т.д. - другие, эти - практически одно и то же.
zltigo
Цитата(SasaVitebsk @ Dec 10 2008, 03:06) *
Справедливости ради надо сказать что вы переносите свои действия на действия компилятора. А это не так. От того, где вы объявляете или уничтожаете локальную переменную - мало что зависит.

Это ПОДСКАЗКА компилятору. Идеальный компилятор, естественно, в подсказках не нуждается smile.gif, а реальным очень не помешает. Особенно, когда register похерен sad.gif
Цитата
и многое другое... Это не случайные "недоработки". Это стратегия...

Ага, напоминает "'это не баг, это фича" sad.gif.... игра в слова, когда понятие "Жопа" никуда не девается а слово "Жопа" из словоря исключается, дабы случайно не сказали.
777777
Цитата(tyro @ Dec 10 2008, 13:11) *
Паскаль не является под(над)множеством языка СИ, это другой язык программирования, и подходы к решению одинаковых задач у них могут быть разными.

Ну да, разумеется, и подходы эти крайне неудачные.
Цитата(tyro @ Dec 10 2008, 13:11) *
Если дальше почитаете по языку паскаль, то найдете еще и другие отличия. smile.gif

Отличия? smile.gif Хм... Это не отличие, и не "другой подход". Это способ облегчить жизнь разработчикам компилятра - им так гораздо удобнее. А про удобство пользователей автор почему-то не подумал. Он создал его для машины, а не для человека. И если вы хвалитесь тем, что можете на нем написать все то, что другие пишут на С - значит ваше сознание уже потеряло гибкость и закостенело до такой степени, что ограничений паскаля вы даже не замечаете. Вы просто не догадываетесь, что за их пределы можно выйти, что там есть другой мир.
Цитата(tyro @ Dec 10 2008, 13:11) *
Это Вам бы надо спросить непосредственно, а заодно наставить его на путь истинный, что и как надо делать. biggrin.gif

Как он делает - это его право. А мое право - непользоваться его поделками.
Вообще же, Вирт - типичный лузер. Он давно поиграл конкурентную борьбу, но все пыжится, пытясь протолкнуть свой паскаль под разными соусами - добавляя в него модные нововведения, типа ООП, а чтобы показать свою "крутость", добавляет туда виртуальные конструкторы - не догадываясь при этом, что тем самым демонстрирует свое полное незнание основ ООП.
ARV
Цитата(777777 @ Dec 10 2008, 14:17) *
И если вы хвалитесь тем, что можете на нем написать все то, что другие пишут на С - значит ваше сознание уже потеряло гибкость и закостенело до такой степени, что ограничений паскаля вы даже не замечаете. Вы просто не догадываетесь, что за их пределы можно выйти, что там есть другой мир.

О как! какая-то логическая нестыковочка... если есть ограничения - то как получается делать то же самое? И, если можно, позвольте попросить вас огласить весь список ограничений (только не надо, пожалуйста, про объявление переменных внутри циклов и т.п. - это не ограничения, это смех просто). существенные ограничения, действительно делающие невозможным решение каких-то задач.
Цитата(777777 @ Dec 10 2008, 14:17) *
Как он делает - это его право. А мое Вообще же, Вирт - типичный лузер. Он давно поиграл конкурентную борьбу, но все пыжится, пытясь протолкнуть свой паскаль под разными соусами - добавляя в него модные нововведения, типа ООП, а чтобы показать свою "крутость", добавляет туда виртуальные конструкторы - не догадываясь при этом, что тем самым демонстрирует свое полное незнание основ ООП.
О как в квадрате! smile.gif Очевидно, вы в ООП гораздо лучше Вирта разбираетесь, что так его критикуете... гм... позвольте вас попросить второй раз: огласите, пожалуйста, весь список нарушений основ ООП, допущенных Виртом (а он ли, кстати, автор объект-паскаля?) в объект-паскале, ну, и соответственно, правильное альтернативное решение С++

P.S. Не посчитайте мои просьбы разжиганием холивара - я хотел бы на самом деле узнать то, чего про паскаль еще не знаю. заодно и про С... мало ли - я не Вирт однозначно, и не Страуструп и тем более не Керниган... многого не знаю...
forever failure
Цитата(zltigo @ Dec 10 2008, 16:06) *
слово "Жопа" из словоря исключается, дабы случайно не сказали.

Аналогия паскаля с новоязом уже проводилась в другой теме.
777777
Цитата(ARV @ Dec 10 2008, 14:49) *
О как! какая-то логическая нестыковочка... если есть ограничения - то как получается делать то же самое?

Как? Через жопу.
Цитата(ARV @ Dec 10 2008, 14:49) *
И, если можно, позвольте попросить вас огласить весь список ограничений (только не надо, пожалуйста, про объявление переменных внутри циклов и т.п. - это не ограничения, это смех просто).

А зачем вам непременно весь? Если одно пропущу - то не будет считаться?
Про объявление переменных - это никакой не смех, а очень серьезно. Это приводит к мешание, когда важные переменные путаются с временными, нарушается читабельность.
Если хотите еще - прочитайте эту тему с самого начала. Например, почему переменная цикла for должна быть целой и меняться только на единицу, и сравниваться только с другой переменной (или только с константой? не знаю, я не настолько большой знаток паскаля), и почему она вообще должна быть? Какие такие свойства языка этого требуют?
Вот в Си в цикле for есть три выражения, разделенный точкой с запятой. Первое вызывается в начале цикла, второе - условное выражение - перед каждой итерацией для проверки на окончание, а третье в конце каждой итерации. Все, больше никаких ограничений на них не накладывается, они могут быть какими угодно сложными, включать в себя вызовы функций - короче всё, что входит в понятие "выражение", а понятия переменной цикла там вообще нет - вы лишь можете ее ввести если надо. Вот объясните мне, почему такую гибкость вы считаете вредной и почему ее надо так зверски ограничивать.
Цитата(ARV @ Dec 10 2008, 14:49) *
существенные ограничения, действительно делающие невозможным решение каких-то задач.

Любые задачи можно решить на любом языке, хоть на фортране. Вопрос лишь в том, какие усилия придется на это затратить.
Цитата(ARV @ Dec 10 2008, 14:49) *
О как в квадрате! smile.gif Очевидно, вы в ООП гораздо лучше Вирта разбираетесь, что так его критикуете... гм... позвольте вас попросить второй раз: огласите, пожалуйста, весь список нарушений основ ООП

А можно мне тоже второй раз поинтересоваться: а зачем вам именно весь список? Одного пункта не достаточно? smile.gif
Цитата(ARV @ Dec 10 2008, 14:49) *
<...> хотел бы на самом деле узнать то, чего про паскаль еще не знаю. заодно и про С... мало ли - я не Вирт однозначно, и не Страуструп и тем более не Керниган... многого не знаю...

Про паскаль я вряд ли что расскажу - не специалист. Сам периодически узнаю что-то новое и ужасаюсь. А если хочешь узнать про Си - читай книжки. Но предупреждаю: перед этим тебе придется заставить себя тщательно забыть паскаль, иначе, например, прочитав про цикл for, тебе покажется, что там все так же, как в паскале. Ведь его изучение не проходит бесследно для организма.
ARV
Цитата(777777 @ Dec 10 2008, 15:27) *
Как? Через жопу.

типичный ответ. думаю, если бы вас спросил в личной беседе - вы бы мне просто в глаз дали, да? это удивительно убедительный аргумент. smile.gif
Цитата(777777 @ Dec 10 2008, 15:27) *
Про объявление переменных - это никакой не смех, а очень серьезно. Это приводит к мешание, когда важные переменные путаются с временными, нарушается читабельность.

ошибаетесь. ранее было сказано на счет того, что серьезные, критически важные системы разрабатываются на языках с "избыточным" (по мнению сишников) многословием. дело в том, что это многословие на самом деле дисциплинирует. а синтаксис Си в общем слечае допускает расхлябанность.
так вот, отсутствие путаницы обеспечивается не размещением объявления локальных переменных где ни попадя, а интуитивно понятныими именами этих переменных. и это куда более важно, нежели 5 переменных с ничего не значащим именем i в 5 разных "локальных" местах, особенно если функция состоит из сотни строк.

Однако, все-таки это "ограничение паскаля" вовсе не критичное - оно совершенно не мешает программированию. Т.е. не соответствует моей просьбе указать именно ограничивающие возможности програмиста требования языка.
Цитата(777777 @ Dec 10 2008, 15:27) *
Например, почему переменная цикла for должна быть целой и меняться только на единицу, и сравниваться только с другой переменной (или только с константой? не знаю, я не настолько большой знаток паскаля), и почему она вообще должна быть? Какие такие свойства языка этого требуют?
интересно, а почему трамвай ездит по рельсам. а самолет - по небу летает? тут ответ лишь один - потому. В английском и немецком есть артикли - в русском нет. Почему? Без них разве нельзя? русским - можно. немцам - нельзя. это не ограничение. это синтаксис языка. Надо без переменной? используйте while или repeat-until, паскаль дает вам такую возможность smile.gif
Цитата(777777 @ Dec 10 2008, 15:27) *
Вот объясните мне, почему такую гибкость вы считаете вредной и почему ее надо так зверски ограничивать.

я не считаю вредной гибкость Си. Я ее вполне уважаю. но я так же уважаю паскаль - не меньше Си. И обратите внимание - я ни слова критики в адрес Си не сказал. Я считаю, что утверждение "паскаль плохо, Си - хорошо" неверно. а уж вы, как знаток Си, разберитесь в логическом выражении: из-за значения какой его части получается FALSE а не TRUE smile.gif
Цитата(777777 @ Dec 10 2008, 15:27) *
Любые задачи можно решить на любом языке, хоть на фортране. Вопрос лишь в том, какие усилия придется на это затратить.

принципиально - такие же. условие только одно - уровень программиста должен быть одинаковым. если вы на Си работаете 10 лет - то и сравнивайте себя с паскалистом такого же стажа (и, желательно, той же направленности). на счет фортрана - если я не ошибаюсь, такой математической библиотеки функций, как для фортрана, нет ни в одном языке до сих пор. и на фортране до сих пор делают массу научных вычислений во всем мире (если я не путаю).
Цитата(777777 @ Dec 10 2008, 15:27) *
Про паскаль я вряд ли что расскажу - не специалист. Сам периодически узнаю что-то новое и ужасаюсь. А если хочешь узнать про Си - читай книжки. Но предупреждаю: перед этим тебе придется заставить себя тщательно забыть паскаль, иначе, например, прочитав про цикл for, тебе покажется, что там все так же, как в паскале. Ведь его изучение не проходит бесследно для организма.
вот в том-то и беда, что не зная ничегошеньки про паскаль, вы яро его ругаете, голосоловно - ни одного убедительного аргумента своего негативизма не представили, но твердо стоите на своем. скорее, ограниченность мышления, неспособность даже задуматься над мнением собеседника/оппонента присуща вам (не прошло бесследно изучение Си? wink.gif ) я свободно работаю с паскалем и с Си, вполне справляюсь с Java, не говоря о всяких VB. я прекрасно чувствую разницу в циклах for и абсолютно не разделяю ваших восторгов по этому поводу. уж если есть в Си какие-то занятные изюминки, то уж никак не в циклах smile.gif
zltigo
Цитата(ARV @ Dec 10 2008, 15:55) *
нежели 5 переменных с ничего не значащим именем i в 5 разных "локальных" местах, особенно если функция состоит из сотни строк.

По традиции соложившейся с Фортрановских времен i,j,k значат очень многое - больше чем некие длинные "осмысленные" имена.
ARV
Цитата(zltigo @ Dec 10 2008, 16:35) *
По традиции соложившейся с Фортрановских времен i,j,k значат очень многое - больше чем некие длинные "осмысленные" имена.

возможно. особенно если учесть (согласно ранее высказанному мнению), что во внешнем цикле i может быть типа char, а во вложенном - типа double smile.gif

не будем доводить все до абсурда - я уже говорил, что место объявления локальных переменных не является действительно критически важным - ни на что, кроме личных пристрастий программиста это не влияет. и наперед скажу - компилятору так же по барабану, если оптимизатор у него нормальный.
zltigo
Цитата(ARV @ Dec 10 2008, 19:33) *
и наперед скажу - компилятору так же по барабану, если оптимизатор у него нормальный.

Разочарую - "нормальных" компиляторов еще не сделали. Ибо, нормальный программист пока еще может быть умнее их. Ждемс...

Цитата(ARV @ Dec 10 2008, 19:33) *
во внешнем цикле i может быть типа char, а во вложенном - типа double smile.gif

И пусть будет, главное, что по классическому имени видно, что это нечно дежурно-расходное использующееся для индексации, а поскольку объявлять эту переменную можно в пределах видмости (как программы так и программиста), а не фиг знает где, то и тип перед глазами.
ARV
Цитата(zltigo @ Dec 10 2008, 19:56) *
Разочарую - "нормальных" компиляторов еще не сделали. Ибо, нормальный программист пока еще может быть умнее их. Ждемс...

ой, как мне не хотелось вас огорчать... но дождались еще бог знает когда!

Delphi7 при включенной оптимизации не создает локальную переменную до тех пор, пока она не потребуется... поэтому когда я объявляю 20 локальных переменных для предполагаемых далее 20 разных циклов - реально память выделяется в стеке только для одной единственной - той, чей цикл сейчас выполняется... то есть, оптимизатор исключает из кода выделение памяти в сегменте стека заранее под все 20 локальных переменных - и ему все равно, что они все в куче объявлены ДО begin-end функции...

Цитата(zltigo @ Dec 10 2008, 19:56) *
И пусть будет, главное, что по классическому имени видно, что это нечно дежурно-расходное использующееся для индексации, а поскольку объявлять эту переменную можно в пределах видмости (как программы так и программиста), а не фиг знает где, то и тип перед глазами.

вот вы сами и попалиcь на свой крючок! smile.gif очень легко перепутать допустимую для индексации char i с недопустимой для индексации float i - если увлечься возможностями, которые Си дает.

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

видеть тип переменной перед глазами - это ж курам на смех, а не какое-то супер-достоинство! вам же ничто не мешает не видя типа какой-то глобальной переменной работать с ней на Си smile.gif

так шта... ждем других убийственных преимуществ smile.gif то есть доказательств превосходства smile.gif
zltigo
Цитата(ARV @ Dec 10 2008, 20:08) *
Delphi7 при включенной оптимизации не создает локальную переменную до тех пор....

...пока может однозначно понять написанное Вами. Это случается часто. Но не всегда.
Цитата
, пока она не потребуется... поэтому когда я обявляю 20 локальных переменных для предполагаемых далее 20 разных циклов - реально память выделяется в стеке только....

В стеке? Прелестно, а хотел-бы намекнуть компилятору, что он может и регистром воспользоваться, поскольку это узколокальная переменная. А поминаемые Вами float и char тоже в один байтик попеременно помещаются?
Цитата
видеть тип переменной перед глазами - это ж курам на смех, а не какое-то супер-достоинство!

Вот и я о том-же, поскольку Вы почему-то сильно огорчились, что 'i' будет иметь на разных уровнях разные типы. Вы огорчились, а не я. Я проблем не вижу.


Цитата(ARV @ Dec 10 2008, 20:08) *
а паскаль можно сравнить с заботливой мамашей, которая так же дает всем своим деткам огромные возможности, но предупредительно и заботливо следит, чтобы понапрасну гвоздиком в глазик не совали... разве это так плохо?

Скорее с добрым добрым доктором надевающим смирительную рубашечку, или с вежливой вежливой учительницей утверждающей, что слова "Жопа" нет, ...... Короче все именно так и обстоит - "детский сад" sad.gif, а за его пределами другая взрослая жизнь. Взрослеют, правда, не все sad.gif. Бывает.
ARV
Цитата(zltigo @ Dec 10 2008, 20:26) *
В стеке? Прелестно, а хотел-бы намекнуть компилятору, что он может и регистром воспользоваться, поскольку это узколокальная переменная. А поминаемые Вами float и char тоже в один байтик попеременно помещаются?

ну, не мне вам, как знатоку Си, рассказывать, что в памяти по одному адресу могут разные типы данных размещаться... сначала int сидит в ячейках, потом, когда int не нужен боле - туда float поместит... стек, он как-бы для того и предназначен... а на счет регистров - я не опускаюсь до таких низин, работая на паскале (да и на Си только при работе с МК) - это лишнее. возможно, он так и делает - я в дебаггере туда не лезу, и листинги не анализирую.

Цитата(zltigo @ Dec 10 2008, 20:26) *
Скорее с добрым добрым доктором надевающим смирительную рубашечку, или с вежливой вежливой учительницей утверждающей, что слова "Жопа" нет, ...... Короче все именно так и обстоит - "детский сад" sad.gif, а за его пределами другая взрослая жизнь. Взрослеют, правда, не все sad.gif. Бывает.
давайте аргументированно на счет "нет" и рубашечки. я уже просил (хоть и не вас) перечислить реально ограничивающие программиста рамки, т.е. те, которые делают решение каких-то задач невозможным. придирки к синтаксису не принимаются, т.к. это равносильно придиркам к цвету волос. мне просто смешно читать про всякие выкрутасы то с циклами, то с переменными... если паскаль не дает выкрутасить - это еще не факт, что это плохо. найдите настоящие аргументы, а не детский лепет
zhevak
А скажите мне Люди добрые, откуда у вас такая насильственная вербовка в свою веру, местами переходящая в мордобой?

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

Люди, согласитесь, что каждому комфортно в своей среде. Какие бы красивые картины "трудовой" жизни вы ни рисовали бомжу, ему все равно будет удобней носить вонючие одежды и жить в подземке. Это его среда, и он убежден в "нормальности" своей жизни. А ваша жизнь, с его точки зрения, -- она как раз не нормальная.

Согласитесь на том, что большая часть программистов более склонна писать на Си, чем на Паскале. Это особенно чувствуется здесь -- в среде микроконтроллеров. В "комповых" же задачах, которые далеки от "железа", Паскаль опять же отодвигается в сторону за счет использования других более интересных языков. А возьмите мир *NIX-ов! Тут и обсуждать, собственно, нечего.

Согласитесь, что Государственная Система Образования не предполагает свободный выбор языка для обучения основам программирования, в отличие от свободы выбора языка, которая существует на производстве. Поэтому так и получается, что на верху (в Министерстве Образования) решили, то и внизу (в школах, инстиутах,...) насаждается. Т.е. Паскаль здесь не живет свободно, он живет "по приказу". Однако, против системы не попрешь... Поэтому биться бесполезно. Придет время, она сама себя изнутри убъет.

По моему итак понятно, что мир Паскаля уже не такой, каким он был 20 лет назад; что сфера использования Паскаля сокращается намного быстрее, чем сфера применения Си. Паскаль нужен только его ностальгирующим "любителям" и людям от Системы Образования. Первые балдеют от прикосновения к нему, вторые боятся вякнуть против (а зачастую еще ничего другого еще и не знают!).
ARV
закономерно все сведено к аргументу "сам дурак" и невежливому намеку на ущербность оппонента. причем не со стороны паскалистов smile.gif это очень характерно. своего рода "расовое превосходство". ничего доказывать не надо, то, что коньюнктура рынка повернула в сторону Си выдавать за его непреодолимое превосходство - и на этом все аргументы кончаются.

в мире подавляющее количество "настольных" компов работают на Интелах и под Windows - это что, самые лучшие в мире процессоры и ОС? не факт - просто наиболее раскрученные. но привычка все мерить рублем/долларом ограничивает гругозор...

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

неужели за {++::&&} вы не видите, что есть и другие хорошие вещи?!

знаете, порой задаю себе вопрос: почему по отношению к паскалистам из уст сишников постоянно звучат слова типа "ущербный", "отстой" и др. уничижительные эпитеты, а вот со стороны паскалистов в адрес сишников такое услышишь редко? обидно, однако...
zltigo
Цитата(ARV @ Dec 10 2008, 20:53) *
...которые делают решение каких-то задач невозможным.

Кому-то уже здесь отвечали - вопрос не в невозможности так или иначе чего-то добится. Вопрос в пригодности и качестве того или иного языка четко и эффективно излагать свои мысли. Паскаль в совоей первоначальной основе для нормального общения вообще малопригоден. Не случайно разговоры о "Паскале" сразу переводяся на нечто хаотичное от "Борланд" sad.gif. Однако пытаются как заведенные повторять рассказы "добрых мамаш" о необычной добожелательности некого "Паскаля" и мудрости его Папы якобы унаследованными "детьми лейтенанта Шмидта".
Огурцов
А скажите мне Люди добрые, откуда у вас такая насильственная вербовка в свою веру, местами переходящая в мордобой?

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

Люди, согласитесь, что каждому комфортно в своей среде. Какие бы красивые картины "трудовой" жизни вы ни рисовали бомжу, ему все равно будет удобней носить вонючие одежды и жить в подземке. Это его среда, и он убежден в "нормальности" своей жизни. А ваша жизнь, с его точки зрения, -- она как раз не нормальная.

По моему итак понятно, что мир Си уже не такой, каким он был 20 лет назад; что сфера использования Си сокращается очень быстро. Но вы еще этого не поняли. Ну так кто не спрятался - я не виноват(с)

зы:
Цитата
Согласитесь, что Государственная Система Образования не предполагает свободный выбор языка для обучения основам программирования

И вы читали-читали и так и не поняли, почему ?

ззы: слова автора (с) zhevak
zltigo
Цитата(Огурцов @ Dec 10 2008, 21:26) *
А скажите мне Люди добрые, откуда у вас такая насильственная вербовка в свою веру...

За себя скажу - я совершенно не занимаюсь "насильственной вербовкой". Мне все равно.
Цитата
что сфера использования Си сокращается очень быстро. Но вы еще этого не поняли. Ну так кто не спрятался - я не виноват(с)

Естественно сокращается. Появилась масса специализированных языков. Програмирование во многих случаях перестало вообще быть профессией и там свои по своей сути простенькие узкоспециализированные языки. Есть программирование и вообще без языков. Это нормально. Соответственно странным становится программирование на "C" бухгалтерии, WEB,.... Столь-же ненормальным и странным, как программрование микроконтроллеров на Паскале. И это реальность, а не вопрос какой-то "веры".
Огурцов
Цитата(zltigo @ Dec 10 2008, 18:25) *
Вопрос в пригодности и качестве того или иного языка четко и эффективно излагать свои мысли.

Нет, не совсем так. Язык - средство общения, основная задача языка четко, эффективно и самое важное без ошибок передать информацию. Так вот, си - это как передача данных без CRC, а паскаль - тоже самое, но только с CRC. Да, накладные расходы на дополнительные пару байт CRC чуть-чуть выше, чем у си, но ведь вам не приходит в голову передавать важные данные без контроля ? Надеюсь. Если же контроль канала передачи информации у вас ассоциируется не с контролем, а с чем-то другим, типа ""добрых мамаш" о необычной добожелательности некого "Паскаля" и мудрости его Папы якобы унаследованными "детьми лейтенанта Шмидта"", то пересматривайте, пожалуй, свое отношение к программированию. И неплохо бы до завершения последнего помолчать в тряпочку, про паскаль. Поскольку, проблемы у паскаля, конечно, есть, но совсем не те, о которых думают сишники.
zltigo
Цитата(Огурцов @ Dec 10 2008, 21:42) *
..помолчать в тряпочку, про паскаль.

Легко smile.gif.
zhevak
Цитата(ARV @ Dec 10 2008, 23:13) *
как из того, что паскаль уступает свои позиции следует то, что он хуже?

Упс! А это уже Ваши проблемы. (Кому надо, тот видит.) Вы постоянно путаете причину и следствие.
"Хуже" -- это причина, "уступает свои позиции" -- следствие.

Иначе получается, что на свободу выбора языка (у пишуших программистов) влияет сговор производителей компиляторов -- "точить" только Си-компайлеры. Чем ведь надо объяснять неравнозначную миграцию Си-шников и Паскалистов, и то остоятельство, что молодежь изучив в школе/институте Паскаль, толпами валит в сторону Си? Во, дураки! Правда? Все?

Извините, передерну:
Самара не хуже Тойоты. Попробуйте доказать обратное.
Если я упрусь рогом в землю, то мне тоже Вы доказать ничего не сможете! А если еще в правительстве изобретут приказ ездить только на отечественных авто, то сами понимаете -- будет полна аналогия.

А понимаю Вас, что все это обидно. Очень...
Что делать? -- Терпите. Либо не ходите туда, где Вас бьют.
Огурцов
Спасибо )
zhevak
Цитата(Огурцов @ Dec 10 2008, 23:42) *
Язык - средство общения, основная задача языка четко, эффективно и самое важное без ошибок передать информацию. Так вот, си - это как передача данных без CRC, а паскаль - тоже самое, но только с CRC.


Мощно! Вы позволите использовать Вашу парадигму, разумеется, с обязательной ссылкой на автора?
Огурцов
Цитата(zhevak @ Dec 10 2008, 19:08) *
Извините, передерну:
Самара не хуже Тойоты. Попробуйте доказать обратное.
Если я упрусь рогом в землю, то мне тоже Вы доказать ничего не сможете! А если еще в правительстве изобретут приказ

Учиться ездить гораздо лучше на старой, дешевой самаре, чем на новой, дорогой тойоте. И только после этого персаживаться на тойоту/мерс/фуру/трактор или продолжать ездить на самаре. В зависимости от задач. А от сишников (здесь) слышно только одно - тойота во веки веков.


Цитата(zhevak @ Dec 10 2008, 19:21) *
Мощно! Вы позволите использовать Вашу парадигму, разумеется, с обязательной ссылкой на автора?

Разрешаю.
Rst7
Цитата(zltigo @ Dec 10 2008, 13:06) *
Это ПОДСКАЗКА компилятору. Идеальный компилятор, естественно, в подсказках не нуждается smile.gif, а реальным очень не помешает. Особенно, когда register похерен sad.gif

+дофига. В этой сложной обстановке я рад встретить соратника по борьбе smile.gif

Вот только могут ли приверженцы Паскаля оценить тонкую необходимость register для профессионала?

Цитата
По традиции соложившейся с Фортрановских времен i,j,k значат очень многое - больше чем некие длинные "осмысленные" имена.


Традиция эта, все же, имеет более глубокие корни в математической нотации. Откуда непосредственно пришла в Фортран.

Именно поэтому, профессионал напишет i, а не какой нибудь Index wink.gif
ARV
Цитата(zhevak @ Dec 10 2008, 22:08) *
Самара не хуже Тойоты. Попробуйте доказать обратное.
легко! ибо есть объективные характеристики, по которым машины легко сравнивать:
1. скорость: самара 140 с грохотом, тойота 180 с комфортом
2. экономичность: самара 8 л при 80 л.с., тойота 10 л. при 160 л.с.
3. комфорт: у самары ноль со стеклоподъемником, у тойоты - климат-контроль, круиз-контроль, КПП-автомат и т.п.
спсиок можно продолжить

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

и хотя самару разбить не жалко и потому учиться на ней проще - аналогии с паскалем тут неуместны, ибо если сравнивать Си с паскалем в "автомобильных" аналогиях, следует говорить: что лучше - AUDI или BMW. или Роллс-Ройс и Бентли.

что все куда-то бегут - это ничего не доказывает. было время - все бежали в Израиль, до этого бежали в Париж и т.д. Трудовые резервы бегут? - Все бегут © Джентельмены удачи.

я задам вопрос асам Си: я возьму проект из примерно 10-12 файлов исходных текстов Си, в каждом по 1000 и более строк, добавлю (не заменю, а добавлю) в единственный файл единственный символ. Вы согласны, что это может сделать весь проект полностью неработоспособным? Надеюсь, что с этим никто не поспорит (это и для паскаля верно). НО: какова вероятность, что компиляция этого проекта на Си пройдет без ошибок? Я уверен, что это далеко ненулевая вероятность! Думаю, что если мне дадут как следует подумать, я сумею вставить символ в такое место, что даже Warning не появится. И второй вопрос: как быстро вы обнаружите этот символ, занимаясь отладкой проекта? А вот на паскале такой финт выйдет вряд ли, тут вероятность успешной компиляции гораздо ближе к нулю (хотя 100% гарантию я не дам), а время поиска изменения скорее всего будет сведено к первой попытке компиляции. возвращаясь к автомобильной аналогии: я вынимаю из машины деталь, она заводится и едет - вы без страха сядете в нее? возможно, если вы супер-ас-водитель, то по изменившейся тональности выхлопа вы и заподозрите, что тормозов больше нет, но большинство разобьется.

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

Цитата(Rst7 @ Dec 10 2008, 23:08) *
Откуда непосредственно пришла в Фортран.

Именно поэтому, профессионал напишет i, а не какой нибудь Index wink.gif
эх... и снова разочарую вас... традиция писать i вместо Index пришла из необходимости работать с перфокартами, где каждый лишний символ был просто мучением, тогда и функции имели имена из одной-трех букв... согласен, что в эпоху перфокарт фортран главенствовал, но с их уходом отпали проблемы в "приличных" именах переменных. Связь с математикой явно притянута за уши, хотя какой-то небольшой смысл в этом есть. однако, почему не прижились символы типа греческой сигмы (в знакогенераторах они есть)? в математике ведь они не менее широко применяются, причем в совокупности с индексами...

признаюсь честно - все исходные тексты, написанные признанными профессионалами (надеюсь, исходники драйверов из Microsoft DDK можно такими назвать?) изобилуют очень простыми, я бы сказал примитивными конструкциями Си (без упомянутых десятком постов ранее извратов), но с ОООООООЧень длинными именами функций и переменных - порой оператор сложения двух переменных написан на трех строках - чтобы имена переменных влезли на строку без скроллинга по горизонтали.


Цитата(Rst7 @ Dec 10 2008, 23:08) *
Вот только могут ли приверженцы Паскаля оценить тонкую необходимость register для профессионала?
боюсь, многие из "профессионалов" Си так же не в состоянии объяснить, зачем им такая необходимость smile.gif ну, если отбросить МК-програмирование, конечно.
SasaVitebsk
Цитата(777777 @ Dec 10 2008, 09:44) *
Вы глубоко заблуждаетесь. Как минимум, от этого зависит количество требуемой памяти - если переменная после выхода из блока уничтожается, то это не условность компилятора, а это происходит на самом деле - занимаемые ей регистры могут использоваться для других целей, если она была в стеке, то он сокращается, даже Keil для 8051, который хранит локальные переменные в обычной памяти, использует ее очень эффективно - если в функции имеется несколько блоков и в каждом объявляюся локальные переменные, то для них будут использоваться одни и те же ячейки памяти, более того - он строит дерево вызовов функций, благодаря чему переменные из "параллельных" функций также будут располагаться в одной области памяти, а для 8051 с ее объемом памяти это очень важно. Да и просто для понимания программы гораздо легче, когда действие переменной локализовано, в отличие от паскаля, где все переменные свалены в одну кучу независимо от их назначения, важности и области действия. Не говоря уже о том, что инициализация переменной сразу при объявлении гарантирует, что вы не станете использовать неинициализированную переменную.


Я не заблуждаюсь. Я просто смотрю результирующий листинг и вижу. Или вижу когда иду в отладчике JTAG по тексту проги и вижу переменные, которые компилятор оптимизировал.
Несколько настораживает то, что вы этого как-то не заметили.

Я видел места, где введение новой локальной переменной на самом деле укорачивало код (и даже сознательно использовал переприсваивания). Можете посмотреть ветку по IAR где-то бутлоадер писали сообща. И вылизовали. Там такого - завались.

Ещё раз повторю, объявление вами локальной переменной - это указание компилятору, но это вовсе не значит что он так будет делать.
А если вы хоть раз посмотрите в скомпилированный листинг того же Delfi, то похоже, тоже будете удивлены. Мало того, что он увидит переменную цикла, опеделит её локальность (кстати в Pascal переменная цикла всегда является локальной. Её значение за пределами цикла "неопределено"), так он вообще может её пустить задом наперёд например. То есть ваше for i:=1 to 5 может быть перекручено в 4 to 0, к примеру.


И далее. Я не умаляю достоинств Си.
Наоборот. Я им пользуюсь. Мне он очень нравится. Для микроконтроллеров, пока, это самое найлучшее решение (на мой взгляд). Более того, на сегодняшний момент, если бы появился компилятор Паскаля для МК, то скорее всего я бы им не воспользовался.

Но. Это не значит, что все остальные языки не имеют права на жизнь!
Если что-то мне надо быстро сделать, например прогу заливки для Bootloader-а на компе или алгоритм какой-то прогнать, то я, как правило выбираю Delfi. И мне ни грама не стыдно. smile.gif Мне достаточно приятно и комфортно с ним работать. Правда мне наплевать сколько кило он мне там отвесит.

Возможно скоро придётся шарп использовать.



Ну а насчёт кто кому проигрывает ... русский язык давно и катастрофически английскому проигрывает. А английский ... китайскому.

Так вы уже записались на курсы? Если нет, то почему?
zhevak
Цитата(Огурцов @ Dec 11 2008, 00:22) *
Учиться ездить гораздо лучше на старой, дешевой самаре, чем на новой, дорогой тойоте. И только после этого персаживаться на тойоту/мерс/фуру/трактор или продолжать ездить на самаре. В зависимости от задач.

(Упираюсь рогом в землю.)
Причем здесь логическая связка "учиться и ездить"?

Нет, я не могу с Вами согласится, по нескольким причинам.
1) я считаю, что учиться нужно ездить на велосипеде. Цена последствий аварий самая наименьшая.
2) я считаю, что учиться ездить нужно на том ТС (транспортном стредсте), на котором собираешься ездить. Т.е. если собрался водить Тойоту -- учись на Тойоте. Решил управлять фурой -- учись управлять фурой. Тракторист? -- Осваивай трактор. Ну т.д. Изучать один тип ТС, а потом ездить на другом -- не самый эффективный способ достичь поставленной цели. Хотя если хочется только попробовать, то можно. Но ведь это ж совсем из другой сферы.

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

Думать, что ремонт дешевой машины обойдется дешевле -- это не столько экономия средств, сколько индульгенция небезопасной езды. Экономить нужно не на дешевизне ТС. Свою жизнь/здоровье "удешевить" не возможно. Нужно изначально привыкать к мысли, что безаварийная езда -- это не только экономия на ремонтах, но и норма поведения на дороге. Какой будет экономический эффект для Самары или для Тойоты от того, что не надо ничего ремонтировать?

Конечно, если еще не уверен, то и не выезжай на проблемные дороги. Езди по полям, по деревням, по лесу, по гаражам... Дорог полно.

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


Чувствуете? Начался словесный понос, а истина ушла. Вы пытаетесь доказать мне очевидные вещи. Я упорно стараюсь их не видеть. Я забалтываю ситуацию. Я заставляю Вас собирать доказательства. Я откидываю неудобные факты, говоря, что это не по теме и т.д. и т.п.

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


Напомню, из чего вылезла тема автомобилей:
Цитата
повторяю: я не говорю "Самара лучше Тойоты". я говорю "Самара не хуже Тойоты". чувствуете разницу? скажем, у меня необычный цвет Самары, но у вас на Тойоте нет спойлера: машин без спойлера гораздо больше, чем машин с необычным цветом, и что же, выходит машины со сполером хорошие, а с необычным цветом - плохие, потому что в меньшинстве? как из того, что Самара уступает свои позиции следует то, что она хуже?



Цитата
А от сишников (здесь) слышно только одно - тойота во веки веков

Это не к нам! С этим к оталарингологу.
ARV
SasaVitebsk, +100!
что далеко ходить - WinAVR после оптимизации от локальных переменных оставляет одни воспоминания, от знаменитых циклов с пред- и пост- операторами и условиями остается нечто вообще трудновоспринимаемое. и это нормально. от паскаля так же остается одно название. что лишний раз подчеркивает почти абсолютное сходство генотипов, не смотря на внешнее различие smile.gif почему-то это многие в упор не замечают...

Мы с тобой одной крови - ты и я! © Киплинг.

zhevak, а вы мастер в передергивании! лично я не пытался никогда длоказать, что Си - плохо, я пытался доказать, что паскаль - хорошо. вы же пытаетесь доказать, что паскаль плохо. не надо. мы поймем сами. вы просто докажите, что Си - лучше. конкретными примерами. без передергиваний. не опускаясь до подсчета веснушек на носу (читай - места объявления переменных). не аргументируя численным перевесом. не обзывая паскалистов ущербными недоумками. только факты. голые.

Цитата(zhevak @ Dec 10 2008, 23:39) *
(Упираюсь рогом в землю.)
2) я считаю, что учиться ездить нужно на том ТС (транспортном стредсте), на котором собираешься ездить. Т.е. если собрался водить Тойоту -- учись на Тойоте. Решил управлять фурой -- учись управлять фурой. Тракторист? -- Осваивай трактор. Ну т.д. Изучать один тип ТС, а потом ездить на другом -- не самый эффективный способ достичь поставленной цели. Хотя если хочется только попробовать, то можно. Но ведь это ж совсем из другой сферы.
ГЫ... прочел еще раз и порадовался smile.gif тут не поспоришь - если уже есть ТС, то лучше и учиться на нем же. но ведь при этом говрить про тех, кто использует другое ТС, что они лохи и отставшие от жизни - неверно? или я не прав?
zhevak
Цитата(ARV @ Dec 11 2008, 01:24) *
легко! ибо есть объективные характеристики, по которым машины легко сравнивать:
1. скорость: самара 140 с грохотом, тойота 180 с комфортом
2. экономичность: самара 8 л при 80 л.с., тойота 10 л. при 160 л.с.
3. комфорт: у самары ноль со стеклоподъемником, у тойоты - климат-контроль, круиз-контроль, КПП-автомат и т.п.
спсиок можно продолжить

1. ПДД оговаривают скорость передвижения по дорогам вне населенных пунктов не более 90 км/час, на автомагистралях, обозначенных соответствующими знаками, не более 110 км/час -- так что Ваши доводы говорят не о качестве авто, а о Вашем дурном стиле вождения.
Грохот -- не от Самары. Грохот от глушака, который у Вас прогорел. Научитесь правильно следить за состоянием тачки. А потом, повышенная шумность салона меня абсолютно не напрягает. У меня в салоне 2000 Ватт на уши давят. Я вообще ничего не слышу.

2. Мне 160 л.с. не нужны! Мне вполне хватает и 75. Если Вас так заботит мощность, поищите для себя что-нибудь эдак за 200-260 л.с. Будете приятно удивлены, что это сильнее, чем жалкие 160! А мне моих 75 в "пробках" хватает. Все равно больше стом, чем едем.

3. Стекло поднять -- ручку покрутить -- это уже в лом, да? Моветон? Некруто, да?
Климат контроль -- пижонство! В жару продувает. Столько бензина жрет. Каждые два года менять фреон...
Круиз контроль? Нахрена оно мне? Что в стране снова проблема с заправками, не знаешь хватит ли топлива дотянуть до следующей заправки? Так заправляйся по чаще. Или что, ведется особая бухгалтерия по статьям расхода на любимую тачилу? Отсутствие круиза -- абсолютно не проблема.
АКПП -- Гы-ы! Хотел бы я посмотреть на Вас, когда навернется автомат в бескрайней казахской степи. Представьте, во что вам обойдется ремонт. А эвакуатор? АКПП -- это дополнительный литр/полтора расхода топлива.

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

Приведите мне полный список доказательств, того что может Тойота и не может Самара.


// Заметьте, здесь я не выражаю свою истинную точку зрения.
// Я только веду игру по теме "А докажите мне..."



Цитата(ARV @ Dec 11 2008, 02:02) *
вы же пытаетесь доказать, что паскаль плохо. не надо. мы поймем сами. вы просто докажите, что Си - лучше. конкретными примерами. без передергиваний. не опускаясь до подсчета веснушек на носу (читай - места объявления переменных).

А зачем мне это надо -- кому-то что-то доказывать?

У меня грандиозная идея! А давайте наоборот: Вы будете мне доказывать, что Тойота лучше Самары. С конкретными примерами, без передергиваний, не опускаясь до количества лошадей и наличия круиз-, климат- и прочих контроллеров. А я буду продолжать утвреждать, что Самара не хуже Тойоты.


Может остановимся на том, что даже бомж имеет право распоряжаться своей жизнью так, как ему хочется? (Жизнь бомжей меня мало интересует.)
Огурцов
Цитата(zhevak @ Dec 10 2008, 20:39) *
1) я считаю, что учиться нужно ездить на велосипеде. Цена последствий аварий самая наименьшая.

О том и речь - все просто и понятно, стоимость ошибки небольшая, максимальное число ошибок исправляется самостоятельно, уже на этапе компиляции.

Цитата
Думать, что ремонт дешевой машины обойдется дешевле

Простой, в первую очердь - три педали, рычаг и баранка. В отличие от.
С другой строны, весь механизм и принцип виден и понятен, как могло бы быть в случае с повозкой, имеющей единственную макрокоманду "трогай".

Цитата
Чувствуете? Начался словесный понос, а истина ушла. Вы пытаетесь доказать мне очевидные вещи. Я упорно стараюсь их не видеть. Я забалтываю ситуацию. Я заставляю Вас собирать доказательства. Я откидываю неудобные факты, говоря, что это не по теме и т.д. и т.п. Вы ничего не докажите

Я, скорее, наблюдатель, а не доказываетель. Но отписываюсь временами на явный бред. Так что уж простите.

Цитата
Имеет такой спор какой-нибудь положительный выход ?

Да. Некто, читающий такой бред, имеет возможность ознакомиться с компенсирующей точкой зрения.
ARV
Цитата(zhevak @ Dec 11 2008, 00:36) *
У меня грандиозная идея! А давайте наоборот: Вы будете мне доказывать, что Тойота лучше Самары. С конкретными примерами, без передергиваний, не опускаясь до количества лошадей и наличия круиз-, климат- и прочих контроллеров. А я буду продолжать утвреждать, что Самара не хуже Тойоты.
Может остановимся на том, что даже бомж имеет право распоряжаться своей жизнью так, как ему хочется? (Жизнь бомжей меня мало интересует.)
тут одно из двух: либо вы уходите в сторону от разговора потому что вам сказать нечего, либо вы пытаетесь доказать, что вы глупее, чем о вас другие думают.
не опасаетесь, что все-таки сумеете убедить всех?
forever failure
И тем, не менее, не смотря на многа букаф пустого впопутарахтения, так и не было не разу приведено ни одного образца кода с соответвующим ему ассемблерным листингом и указанием компилятора паскаля для АВР.
Для Ц в этом нет особой необходимости - пожалте в соседнюю ветку, там этого добра вагон.

Вывод - все выше сказанное про то, какой хороший паскаль - разговор ни о чём.

ЗЫ. Кста, делфи уже осилили 64-битную адресацию, или так и продолжают генерить только код для пня-первого и i486?
ARV
сначала в сторону сравнения машин увели, потом отказываетесь сравнивать их по техническим (т.е. объективным) параметрам, ссылаясь на личные пристрастия или какие-то условия эксплуатации (правила и т.п.), т.е. субъективные причины. это некорректно и неуважительно по отношении к оппоненту. собственно, особого уважения к оппоненту от вас и не заметно было с самого начала...

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

вам нравится Си, другим - Паскаль, все равны и все довольны. но вы говорите, что те, кому нравится Паскаль - ошибаюстя (это я смягчаю смысл ваших слов), они возражают, просят вас объяснить, в чем собственно они не правы. а вместо ответа вы начинаете изливаться словесным поносом. джентельмен так не поступает smile.gif
у вас есть подтверждение своих заявлений? предъявите. нет - извинитесь и перестаньте кидаться говном навозом.
777777
Цитата(ARV @ Dec 10 2008, 15:55) *
Цитата
Про объявление переменных - это никакой не смех, а очень серьезно. Это приводит к мешание, когда важные переменные путаются с временными, нарушается читабельность.

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

Простите, а какая связь с размещением переменных? Как раз здесь Си дисциплинирует - позволяет программисту четко ограничить область действия переменной, в то время как паскаль заставляет сваливать их в одну кучу.
Цитата(ARV @ Dec 10 2008, 15:55) *
интересно, а почему трамвай ездит по рельсам. а самолет - по небу летает? тут ответ лишь один - потому.

Нет, дорогой, ответ вполне конкетный - потому что по небу неэффективно перевозить пассажиров на 1...2 километра. А на трамвае неудобно ездить на 2000...3000 километров. Поэтому оба эти вида транспорта имеют право на существование. Но если один самолет тратит на перевозку пассажира 2 литра керосина на 100 км, а другой 10 - то объективно он не имеет шансов попасть в эксплуатацию. Но тут вступают в действие субъективные факторы - ведь разработчики того самолета тоже хотят получать от него прибыль. И они разворачивают бурную рекламную компанию по его продвижению. Они заяляют:
Цитата(ARV @ Dec 10 2008, 15:55) *
это "ограничение паскаля" вовсе не критичное - оно совершенно не мешает программированию.

То есть повышенный расход топлива совершенно не критичен, летать-то можно!. Но зато наш самолет лучше приспособлен для обучения - у нас некоторые кнопки закрыты защитными колпачками и чтобы на нее нажать, надо открутить защитный винт. Это неудобство сделано специально, чтобы пилот не мог нажать на нее случайно. Потом, научившись летать на таких самолетах, пилоты привыкают и уже не хотят летать на других.
Приерно то же самое произошло и с паскалем - впарив в школы и вузы паскаль, студентов приучили к нему (я бы сказал - подсадили) и теперь они не хотят изучать Си, они просто не видят его преимуществ вследствие зашренности сознания, созданного паскалем.
ARV
Цитата(forever failure @ Dec 11 2008, 09:01) *
И тем, не менее, не смотря на многа букаф пустого впопутарахтения, так и не было не разу приведено ни одного образца кода с соответвующим ему ассемблерным листингом и указанием компилятора паскаля для АВР.
Для Ц в этом нет особой необходимости - пожалте в соседнюю ветку, там этого добра вагон.

Вывод - все выше сказанное про то, какой хороший паскаль - разговор ни о чём.

ЗЫ. Кста, делфи уже осилили 64-битную адресацию, или так и продолжают генерить только код для пня-первого и i486?

я буквально вчера скачал Micropascal Pro beta for AVR и, не сильно вникая, посмотрел листинг простенькой программки мигания светодиодом. по сравнению с полным аналогом WinAVR в ассемблерном листинге кроме таблицы векторов нет ни одной "вспомогательной" команды, которые Си постоянно лепит - инициализация переменных нулями, стеки данных и т.п. Не стану спорить - пример некорректный, надо сравнивать действительно серьезные проекты... но первое впечатление - положительное. Бонус - большой набор готовых библиотек для работы с периферией. Минус - наверное, никто не даст гарантии, что эта бета стабильна и действительно генерирует качественный код без тайных глюков.
777777
Цитата(ARV @ Dec 10 2008, 20:08) *
вот вы сами и попалиcь на свой крючок! smile.gif очень легко перепутать допустимую для индексации char i с недопустимой для индексации float i - если увлечься возможностями, которые Си дает.

Это ошибку сразу отловит компилятор, как вы и мечтали.
ARV
Цитата(777777 @ Dec 11 2008, 09:06) *
Приерно то же самое произошло и с паскалем - впарив в школы и вузы паскаль, студентов приучили к нему (я бы сказал - подсадили) и теперь они не хотят изучать Си, они просто не видят его преимуществ вследствие зашренности сознания, созданного паскалем.
блин, так откройте шоры! ну перечислите хотя бы что-то существенное, что нельзя сделать в паскале с той же легкостью. как в Си! у кого шоры? может, как раз вы не видите положительного в паскале? в чужом глазу соломинку мы зрим, а в своем бревно не замечаем... я задавал ряд вопросов, ответов на которые нет:
- вы знаете недостатки Си?
- пример с добалвением запятой или знака равенства в код - см. выше. - где комментарии?
- конкретные мешающие программировать недостатки паскаля - списком

я уже приводил многолетней давности сравнение результатов работы паскалевского хелловорда и сишного - по размеру и скорости. результат не в пользу Си. поэтому ваши утверждения о неэффективности результата компиляции паскалевских программ (сравнение 100л керосина с 10л - напоминаю) пока голословны. сравнение Delphi и VC в аналогичных тестах дает соизмеримые результаты по размеру и коду - снова не подтверждает ваши тезисы.

почему-то до сих пор не прозвучал главный тезис сторонников Си - о кроссплатформенности. миф, много лет дающий право сишникам смотреть свысока на паскалистов smile.gif

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

Цитата(777777 @ Dec 11 2008, 09:17) *
Это ошибку сразу отловит компилятор, как вы и мечтали.
компилятор-то отловит, только вам потом придется разбираться, какая из двух i неверно задана smile.gif
777777
Цитата(ARV @ Dec 10 2008, 20:53) *
я уже просил (хоть и не вас) перечислить реально ограничивающие программиста рамки, т.е. те, которые делают решение каких-то задач невозможным.

Таких причин приведено уже немало, если вы перечитаете эту тему с начала. Но если вы не желаете их видеть, то приводить их еще можно с таким же успехом, что и метать жемчуг перед свиньями - они его все равно не оценят, лишь потопчут его ногами.
Цитата(ARV @ Dec 10 2008, 20:53) *
т.е. те, которые делают решение каких-то задач невозможным.

В фортране в свое время не было else, только if. Если требовалось выполнять два действия при выполнении и невыполнении условия, приходилось писать goto и лепить метки. Вряд ли ты скажешь, что это удобно. Но это не делало невозможным решение задач. Так же и в паскале - его ограничения лишь мешают программированию, но не делают его невозможным. Но если есть языки, которые программированию не мешают - почему надо пользоваться другими? Какие у них преимущества?
Цитата(ARV @ Dec 10 2008, 20:53) *
придирки к синтаксису не принимаются, т.к. это равносильно придиркам к цвету волос.

Даже синтаксис и набившие оскомину бегины с эндами имеют значение - зачем мне набивать 5 букв если можно поставить одну? Это не только отнимает время, но и мешает пониманию - объект, являющийся по сути лишь скобкой, выглядит как ключевое слово. А для чего нужно слово then? Ведь и без него все понятно.

Цитата(zltigo @ Dec 10 2008, 21:41) *
Цитата
что сфера использования Си сокращается очень быстро. Но вы еще этого не поняли. Ну так кто не спрятался - я не виноват(с)

Естественно сокращается. Появилась масса специализированных языков.

Но при этом - удивтельное дело! - язык PHP почему-то очень напоминает (точнее сказать - слегка отличается от) C, а не паскаль.
zhevak
Цитата(ARV @ Dec 11 2008, 11:04) *
сначала в сторону сравнения машин увели, потом отказываетесь сравнивать их по техническим (т.е. объективным) параметрам, ссылаясь на личные пристрастия или какие-то условия эксплуатации (правила и т.п.), т.е. субъективные причины. это некорректно и неуважительно по отношении к оппоненту. собственно, особого уважения к оппоненту от вас и не заметно было с самого начала...


Простите, ну ведь это Ваш способ гасить оппонента в споре?
Цитата
это "ограничение паскаля" вовсе не критичное - оно совершенно не мешает программированию.



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

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


Цитата
а вместо ответа вы начинаете изливаться словесным поносом. джентельмен так не поступает smile.gif
у вас есть подтверждение своих заявлений? предъявите. нет - извинитесь и перестаньте кидаться говном навозом.

* Простите, не Вам судить и указывать как мне себя вести.
* Классика! -- Месье сам, претендуя на звание джентльмена, не знаеет как пишется слово?
* Вот тут Вы правы, в сортах говна -- я разбираюсь намного хуже Вас. Мне действительно сложно отличить навоз от говна. Впрочем, обвинение в том, что я в Вас чем-то испачкал, требует доказательств. -- В студию!!!
MrYuran
Цитата(ARV @ Dec 11 2008, 09:11) *
по сравнению с полным аналогом WinAVR в ассемблерном листинге кроме таблицы векторов нет ни одной "вспомогательной" команды, которые Си постоянно лепит - инициализация переменных нулями, стеки данных и т.п. Не стану спорить - пример некорректный

Инициализация переменных - это фича конкретного компилятора, кстати не предусмотренная стандартом и отключаемая по желанию. Как и многие другие.
И вообще, если говорим "паскаль" и подразумеваем "Delphi", то смотрим на название темы и констатируем, что имеются некоторые несоответствия.
Главное преимущество си (++) - то, что он де-факто мировой стандарт. Причём не примочки борланда или мелкософта, а ANSI C. Мирового стандарта Pascal не существует.
Большинство открытых (также и закрытых) проектов также написаны на си.
Синтаксис большинства современных языков здорово смахивает на сишный.
Если всё-таки проводить аналогии с машинами, то в своё время многие автолюбители (и профессионалы) тащились от 24-й волги, но сейчас её время прошло.
ARV
Цитата(777777 @ Dec 11 2008, 09:34) *
Даже синтаксис и набившие оскомину бегины с эндами имеют значение - зачем мне набивать 5 букв если можно поставить одну? Это не только отнимает время, но и мешает пониманию - объект, являющийся по сути лишь скобкой, выглядит как ключевое слово. А для чего нужно слово then? Ведь и без него все понятно.
придирки к особенностям синтаксиса выглядят смешными - я уже приводил сравнение с the или der-die-das - это особенности языка. веснушки на лице. вы же не станете говорить, что человек с веснушками - дебил, а чистолицый - умный? так и здесь. если для вас основное преимущество Си в том, что он позволяет быть более ленивым - так и скажите, чего юлить smile.gif а я скажу, что чем длиннее текст программы за счет длинных имен переменных, лексем языка и т.п. - тем ближе он к пониманию человеком, нативнее. так сказать. и я вижу в этом плюс, а не минус. но непринципиальный плюс - веснушку smile.gif

теперь о фортране, goto и невозможности. язык можно назвать плохим, если он не просто неудобен вам (например, из-за того, что вы слишком ленивы и не желаете набирать 3 символа вместо двух), а содержит явные рамки, сужающие ваши возможности, как узкий лифт не позволит инвалиду на коляске подняться на третий этаж. пример: бейсик (классический) не содержит такого инструмента, как указатель, и потому не позволяет манипулировать произвольными областями памяти. это ограничение существенное для многих приложений. далее: бейсик (классик) не содержит инструмента передачи параметров в подпрограммы и возврата результата из них - для этого используются глобальные переменные. это существенно затрудняет как процесс алгоритмизации, так и понимания логики уже готовой программы. понимаете - критерии, которые очевидны и действительно являются недостаткаи. важно вовсе не то, что в бейсике IF, а в Си if smile.gif если можете - повторите аналогично для Си-паскаль.

P.S. я не случайно уточнил, что бейсик я беру классический, ибо в последних версиях его возможности практически не отстают от Си. и призываю для корректного сравнения выбрать версии Си и паскаля "одной весовой категории" - если виртовский паскаль, то тогда ANSI C кернигана&ритчи, а если С++, то как минимум Delphi
777777
Цитата(ARV @ Dec 11 2008, 09:27) *
блин, так откройте шоры! ну перечислите хотя бы что-то существенное, что нельзя сделать в паскале с той же легкостью. как в Си! у кого шоры?

У того, кто не видит таких примеров, которых, как я уже писал, приведено немало, но вы их видеть не желаете. Специально для вас привожу один - перевод символа в нижний регистр:

c |= 0x40;

Паскаль не позволяет проводить с символьными переменными арифметические операции. Впрочем, я догадываюсь, для вас такой пример "несущественный". Более того, вы считаете, что паскаль, не позволяя выполнять перевод символа таким простым способом, помогает программисту. Я же считаю, что мешает.
Цитата(ARV @ Dec 11 2008, 09:27) *
- пример с добалвением запятой или знака равенства в код - см. выше. - где комментарии?

Придумывание кодов и знаков, которые в него можно дабваить, чтобы код стал неработоспособным - давняя забава паскалистов. Только к практическому программиованию это не имеет отношения. Если вы добавили запятую и программа перестала работать - это будет видно по результатам ее работы. Следовательно нужно брать отладчик и искать ошибку. Если же программа не перестала работать - значит она исправна. Все.
Цитата(ARV @ Dec 11 2008, 09:27) *
компилятор-то отловит, только вам потом придется разбираться, какая из двух i неверно задана smile.gif

Та, которая используется для индексирования. Или это не очевидно?
ARV
Цитата(MrYuran @ Dec 11 2008, 09:51) *
Главное преимущество си (++) - то, что он де-факто мировой стандарт. Причём не примочки борланда или мелкософта, а ANSI C. Мирового стандарта Pascal не существует.
он не только де-факто... он и де-юре стандартизирован. а паскаль, увы, нет...
первое за всю тему значительное объективное подтверждение достоинства Си.
но, увы, не как достоинство самого языка... фортран тоже стандартизирован, если я не ошибаюсь, а возможности у них сильно отличаются... мы же, вроде, говорим (или пытаемся говорить) именно о сравнении возможностей языка...

Цитата(777777 @ Dec 11 2008, 10:01) *
У того, кто не видит таких примеров, которых, как я уже писал, приведено немало, но вы их видеть не желаете. Специально для вас привожу один - перевод символа в нижний регистр:

c |= 0x40;

вам уже говорили, что для UTF8, например, такой перевод не прокатит - вашу программу придется страшно долго корректировать, чтобы она смогла переводить регистр символов в этой кодировке. так же это не сработает для Кириллицы и других языков в UNICODE - примеров много. есть кодировки и более экзотические.
а преобразование ch := locase(ch), являющееся традиционным для паскаля, сработает всегда.

что лучше?
Цитата(777777 @ Dec 11 2008, 10:01) *
Придумывание кодов и знаков, которые в него можно дабваить, чтобы код стал неработоспособным - давняя забава паскалистов. Только к практическому программиованию это не имеет отношения. Если вы добавили запятую и программа перестала работать - это будет видно по результатам ее работы. Следовательно нужно брать отладчик и искать ошибку. Если же программа не перестала работать - значит она исправна. Все.
не все. это имеет очень большое значение в реальном программировании.
я спрашивал, как долго вы будете среди 10000 строк искать случайно набранный символ в отладчике? ну дрогнула у вас рука при вводе - бывает, не так ли?
самое интересное, что если я вместо практически любого = поставлю == - компилятор Си проглотит это практически со 100% вероятностью даже без ворнинга (если повезет - скажет, что строка удалена при оптимизации, т.к. не содержит использования результата операции или типа того). и программа после этого начнет работать... и для выяснения того, что она работает неверно - еще надо приложить немалые усилия...
MrYuran
Цитата(ARV @ Dec 11 2008, 10:13) *
самое интересное, что если я вместо практически любого = поставлю == - компилятор Си проглотит это практически со 100% вероятностью даже без ворнинга (если повезет - скажет, что строка удалена при оптимизации, т.к. не содержит использования результата операции или типа того). и программа после этого начнет работать... и для выяснения того, что она работает неверно - еще надо приложить немалые усилия...

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

Цитата из вики.
Ассемблер позволяет делать всё что только возможно, си - максимум из того, что позволяет ассемблер. Причём, чем лучше программист понимает механику работы компилятора, тем больше возможностей может использовать.
ARV
MrYuran, да кто ж с этим спорить станет?! smile.gif вопрос в том, что программист - человек, и может нечаянно ошибиться. стоит ли в этом случае продолжать считать, что он прав? и на самом ли деле это есть преимушество? а контроль действий программиста - недостаток?
я согласен, что больше свободы - больше ответственности. а вы согласны с тем, что меньше законов - больше анархии?
msalov
Цитата(ARV @ Dec 11 2008, 09:13) *
самое интересное, что если я вместо практически любого = поставлю == - компилятор Си проглотит это практически со 100% вероятностью даже без ворнинга (если повезет - скажет, что строка удалена при оптимизации, т.к. не содержит использования результата операции или типа того). и программа после этого начнет работать... и для выяснения того, что она работает неверно - еще надо приложить немалые усилия...

Не всякий компилятор. gcc-3.4.5 выдаёт предупреждение при -Wall, а любое предупреждение - фактически ошибка. Другие компиляторы тоже не отстают smile.gif
Ищите другой пример wink.gif
ARV
я вот подумал, может, простейший пример паскалевского кода разберем?
Код
var str : string;
begin
   str := readln;
   writeln(str);
end.
сумеете написать полный, работающий абсолютно аналогично этому код на Си? и после этого сравним результат по размеру исходника. по размеру исполняемого кода (наверное, для консоли Windows проще всего)...

почему-то мне кажется, что по размеру исходника (к вопросу о экономии сил при написании символов) победа будет за паскалем smile.gif на счет остального - поглядим smile.gif
MrYuran
Цитата(ARV @ Dec 11 2008, 10:29) *
а вы согласны с тем, что меньше законов - больше анархии?

зато работать веселее. Такие бывают забавные глюки, если, например, во флотовом значении вместо точки поставить запятую.
Зато когда раскопаешь - триумф и ликование, и как обычно - "вот дятел!"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.