amvoz Это Ваши личные проблемы. Если Вы не способны нормально освоить Паскаль, лучше Вам программированием не заниматься. А если Вам не хотелось его глубоко осваивать, то неча на язык валить. Я вот на Лиспе ну нифига не понимаю. Значит, Лисп автоматически плохой язык, ни для чего не годящийся? beginner Опять-таки, говорите о себе. Если Вы не способны эти понятия различить в Паскале, значит, проблема в Вас. Хотя б потому, что я различаю их без малейших затруднений. Что значит "вольно использовать функции в математических выражениях"? В чём заключается вольность? amvoz Неудивительно, что Вы Паскаль охаиваете, абсолютно его не зная. a:= Sin(b) + Cos(c) / 10 - MyMegaFunction(d, e, f); Абсолютно допустимая конструкция. Это Ваши проблемы, а не недостаток Паскаля. Если Вы не знаете свой инструмент, то почему это инструмент в этом виноват?
amvoz в паскале ставится readln; для задержки вывода. все верно. SII Code (Text): Опять-таки, говорите о себе. Если Вы не способны эти понятия различить в Паскале, значит, проблема в Вас. Хотя б потому, что я различаю их без малейших затруднений. Я прекрасно читаю паскалевский код. Особенно что касается алгоритмизации задачи. Когда нужно найти примеры решения каких то задач в инете, я не брезгаю ни паскалевским, ни сишным кодом. Просто когда начинал учить Си - я сравнивал его с паскалем, и находил практически одни достоинства. И для начинающих Си - будет проще.
beginner учиться алгоритмам лучше на паскале, чем на С вы читали когда-нибудь словесные описания алгоритмов? для описания алгоритмов используются конструкции типа if cond then ... fi while cond do ... od for var = 1 to N do ... od а не фигурные скобки, тринарные условные операторы, for с запятыми и прочие "удобства" С-образного синтаксиса
Никогда не соглашусь. Вы либо гений, либо ваши программы просты донельзя. А я раньше написал на Pascal программу, решающую японские кроссворды. Без комментариев. Вообще. Думал- раз я пишу, то я вседа пойму. Какое там... Сейчас даже и не суюсь в неё. Прще новую написать. А комментировтать нужно то, что нуждается в комментариях. А не функции ине строчки. По мне так- я описываю условия в условных переходах в основном.
Господа, данная ситуация прекрасно описывается пословицей "всяк кулик свой монастырь хвалит" Неужели непонятно, что каждый будет отстаивать тот язык, к которому больше привык ? Да хоть на тыщу страниц флуд разведите - ни к какому выводу не придете. Модераторам: пора закрывать тему.
Если это переменная, она должна быть описана в разделе var в начале подпрограммы или модуля. В паскале все переменные сгруппированы. А вот в Си, если это переменная, и она объявлена гдето в середине подпрограммы, ее объявление еще поискать надо. Насчет того, зачем надо объявлять переменные до их использования, вместо того чтобы объявлять их "на месте" - чтобы небыло ошибок вида int x = ... .... int x = ... И чтобы при использовании новой переменной можно было ознакомиться со списком уже существующих.
beginner Недостатки Си: 1) Отсутствие строгой типизации, из-за чего возможны случайные присваивания некорректных значений и неправильное употребление операций -- опять-таки случайное (про плохое знание языка не говорим). 2) Отсутствие логического типа (Boolean), несовместимого по присваиванию с другими типами. В общем-то это продолжение п. 1. Например, легко случайно написать a = b && c вместо a = b & c. Результат в общем случае совершенно разный, хотя синтаксис абсолютно корректный, а сама ошибка отнюдь не всегда бросается в глаза, особенно в крупных проектах. Хуже всего, если в основной массе случаев результат операции будет верным, хотя сама операция -- неверной, поскольку тогда неизвестно, когда такая ошибка выползет. Будь специальный логический тип, такая ошибка вызвала бы ошибку компиляции. 3) Черезчур интенсивное использование в качестве знаков операций спецсимволов, причём один и тот же символ может означать разные операции. Сильно затрудняет чтение исходника, способствует появлению лишних ошибок. В частности, претензии имеются к *, &, а также к использованию то спаренных, то неспаренных символов (& и &&, например). 4) Отсутствие оператора присваивания и замена его на операцию, из-за чего возможны конструкции вроде a = b = c. Ухудшает читабельность, вместе с пп. 1 и 2 создаёт потенциально опасные ситуации (= вместо == или наоборот). 5) Возможность лепить в одном операторе целую кучу действий, т.е. "размывание" назначения оператора. Лучший пример -- наверное, for. Конечно, количество строк программы, сокращается, но вот понять написанное... Ну и число ошибок растёт из-за этого. Недостатки Паскаля: 1) Излишнее количество begin-end (в if, while, for в первую очередь -- лучше б были endif и тому подобные слова -- примерно как в Модуле). 2) Отсутствие аналога сишного return.
beginner Когда я изучал программирование в универе, мне надо было к каждой программе прикладывать ее блоксхему. Думаю это был правильный метод обучения. До сих пор иногда занимаюсь рисованием)
GoldFinch код большой, смысла его весь постить в форум - нет. И вполне резонно, что скопипастили тока этот участок кода. Вы снова неправы. Если это переменная - то это сразу видно, что переменная. если это функция, то при наличии () видно что это функция.
Добивает. Никогда не спихивал свои ошибки на что-то ещё. Ошибся- сам виноват. Тренироваться нужно, батенька... (это я о себе)
вопрос - что вы знаете такого, что было создано идеально, наилучшим образом и используется человечеством без изменений? я такого не знаю, кроме бананов, но они не человеческих рук дело - их дал людям после потопа - 10.000 лет взад приблизительно мужик с белой бородой, чтобы они не ели друг друга. делаем вывод: должны существовать языки програмирования более совершенные и удобные, чем эти ваши птичьи ..., ... и ... если поразмышлять на эту тему - какие принцыпы, методы и т.д. вы хотели бы видеть в новом языке?
amvoz Насчёт гения не знаю. Встречал людей не хуже себя, но нечасто O Хотя к нашей дискуссии моя гениальность (или кретинизм) отношения не имеет. Насчёт комментирования того, что нужно комментировать, не спорю. Сам иногда ставлю комментарии к сложным if'ам, например (где восьмиэтажное условие и проще словами объяснить, для чего все эти проверки выполняются). Но в подавляющем большинстве случаев обхожусь исключительно комментариями к заголовкам процедур и функций. GoldFinch Иногда блок-схемы действительно очень полезны. Но не любой алгоритм ими можно нормально описать; правда, с помощью псевдокода тоже далеко не всегда всё будет понятно. Иногда лучше обычным русским (английским, китайским и т.д.) языком объяснить саму суть, идею алгоритма, а не давать код, пускай и псевдо, который эту идею реализует.
amvoz Да можете и обо мне, не обижусь. И свои ошибки на кого-то не спихиваю. Только вот инструмент должен по возможности препятствовать ошибкам, а не способствовать им. Паскаль не допускает свалить всё в одну кучу -- и поневоле приходится раскладывать всё по полочкам. Да, текст программы длиннее получается, зато понятнее.
SII 1) возможны, но если кодер понимает что и к чему он присвивает - то этого не будет. 2) булевой тип - тот же самый инт, 0 - это FALSE, любое другое значение - TRUE. 3) кто ж доктор кодеру, что он плохо знает теорию. Если вы делаете ошибки в таких вещах - то это ваши проблемы, и не надо винить в этом язык 4) очень редко приходится использовать a = b = c. а насчет ошибок = и == - см. п.3 5) Если кодеру не понятно что он написал - ему следует переработать алгоритм. Обычно больше двух индексных переменных в цикле for не использую, пример - писал выше, когда нужно одновременно пройтись по массиву сначала и с конца. В чем недостатки то?
beginner Весьма странный подбор аргументов. С одной стороны восхищения излишествами допустимого синтаксиса for и возможностью объявления переменных по ходу дела, а с другой стороны оправдание необходимости скобок при вызове функций. Как-то нелогично Мое имхо: паскаль в целом является более строгим и, не побоюсь этого слова - более низкоуровневым языком, чем абстрактно-стенографический ЦЦ Вопрос на засыпку: в асме можно по ходу дела переменные объявлять ? Ручками пушить\попить регистры или манипулировать с esp можно, а насчет LOCAL - извини, только в начале процедуры. И ничего, народ как-то кодит и не вопит о сверхнеудобствах В отличие от заумного Ц, в паскале цикл for является аналогом асмовского loop, т.е. специальным простым случаем цикла с целочисленным счетчиком и фиксированным (заранее известным) числом итераций - об этом сказано и в справке и в любом учебнике, и соответсвенно никакие вольности и навороты в паскалевском for не допустимы, иначе это будет не for, а while или repeat Отсутствие скобок при вызове функций (по кр.мере в дельфи) это не обязаловка, а возможность, уступка тем, кому влом писать скобки там где и без них можно обойтись - хочешь указывай, хочешь нет И т.д. и т.п. Но в итоге простой "дубовый" синтаксис приводит к тому, что паскалевский компилятор работает намного быстрее любого сишного, которому приходится долго разбираться чего там юзе запихнул в одну строчку for
Я бы хотел иметь язык высокого уровня, как Pascal или ещё круче и выше. Только чтобы он работал у меня на всех машинах (хотя бы современных), чтобы в разных OC (в Linux в том числе) работал и чтобы кракозябров не повлялось никогда- пусть он сам за меня перекодирует все символы и сам кодировку консоли определяет и пусть среда программирования будет на русском языке. Тогдя я всё стерплю. Нет, всё-таки простота относительно функций пусть будет Сишная.