Начало программирования.

Тема в разделе "WASM.BEGINNERS", создана пользователем Heineken, 22 ноя 2008.

  1. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    amvoz
    Это Ваши личные проблемы. Если Вы не способны нормально освоить Паскаль, лучше Вам программированием не заниматься. А если Вам не хотелось его глубоко осваивать, то неча на язык валить. Я вот на Лиспе ну нифига не понимаю. Значит, Лисп автоматически плохой язык, ни для чего не годящийся?

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

    Что значит "вольно использовать функции в математических выражениях"? В чём заключается вольность?

    amvoz
    Неудивительно, что Вы Паскаль охаиваете, абсолютно его не зная.

    a:= Sin(b) + Cos(c) / 10 - MyMegaFunction(d, e, f);

    Абсолютно допустимая конструкция.

    Это Ваши проблемы, а не недостаток Паскаля. Если Вы не знаете свой инструмент, то почему это инструмент в этом виноват?
     
  2. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    amvoz
    в паскале ставится readln; для задержки вывода. все верно.
    SII
    Код (Text):
    1. Опять-таки, говорите о себе.
    2. Если Вы не способны эти понятия различить в Паскале, значит, проблема в Вас.
    3. Хотя б потому, что я различаю их без малейших затруднений.
    Я прекрасно читаю паскалевский код. Особенно что касается алгоритмизации задачи. Когда нужно найти примеры решения каких то задач в инете, я не брезгаю ни паскалевским, ни сишным кодом. Просто когда начинал учить Си - я сравнивал его с паскалем, и находил практически одни достоинства. И для начинающих Си - будет проще.
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    beginner
    учиться алгоритмам лучше на паскале, чем на С
    вы читали когда-нибудь словесные описания алгоритмов?
    для описания алгоритмов используются конструкции типа
    if cond then ... fi
    while cond do ... od
    for var = 1 to N do ... od
    а не фигурные скобки, тринарные условные операторы, for с запятыми и прочие "удобства" С-образного синтаксиса
     
  4. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Никогда не соглашусь. Вы либо гений, либо ваши программы просты донельзя. А я раньше написал на Pascal программу, решающую японские кроссворды. Без комментариев. Вообще. Думал- раз я пишу, то я вседа пойму. Какое там... Сейчас даже и не суюсь в неё. Прще новую написать.
    А комментировтать нужно то, что нуждается в комментариях. А не функции ине строчки. По мне так- я описываю условия в условных переходах в основном.
     
  5. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    GoldFinch
    алгоритмам лучше учится вообще по блок схемам. Они вообще не привязаны ни к какому языку.
     
  6. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
     
  7. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Господа, данная ситуация прекрасно описывается пословицей "всяк кулик свой монастырь хвалит" :)
    Неужели непонятно, что каждый будет отстаивать тот язык, к которому больше привык ? Да хоть на тыщу страниц флуд разведите - ни к какому выводу не придете.

    Модераторам: пора закрывать тему.
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Если это переменная, она должна быть описана в разделе var в начале подпрограммы или модуля. В паскале все переменные сгруппированы.
    А вот в Си, если это переменная, и она объявлена гдето в середине подпрограммы, ее объявление еще поискать надо.

    Насчет того, зачем надо объявлять переменные до их использования, вместо того чтобы объявлять их "на месте" - чтобы небыло ошибок вида
    int x = ...
    ....
    int x = ...
    И чтобы при использовании новой переменной можно было ознакомиться со списком уже существующих.
     
  9. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    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.
     
  10. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    beginner
    Когда я изучал программирование в универе, мне надо было к каждой программе прикладывать ее блоксхему. Думаю это был правильный метод обучения.

    До сих пор иногда занимаюсь рисованием)
     
  11. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Не без здравого смысла, кто же спорит-то.
     
  12. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    GoldFinch
    код большой, смысла его весь постить в форум - нет. И вполне резонно, что скопипастили тока этот участок кода.
    Вы снова неправы.
    Если это переменная - то это сразу видно, что переменная.
    если это функция, то при наличии () видно что это функция.
     
  13. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Добивает. Никогда не спихивал свои ошибки на что-то ещё. Ошибся- сам виноват. Тренироваться нужно, батенька... (это я о себе)
     
  14. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    вопрос - что вы знаете такого, что было создано идеально, наилучшим образом и используется человечеством без изменений? я такого не знаю, кроме бананов, но они не человеческих рук дело - их дал людям после потопа - 10.000 лет взад приблизительно мужик с белой бородой, чтобы они не ели друг друга.

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

    если поразмышлять на эту тему - какие принцыпы, методы и т.д. вы хотели бы видеть в новом языке?
     
  15. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    amvoz
    Насчёт гения не знаю. Встречал людей не хуже себя, но нечасто O:) Хотя к нашей дискуссии моя гениальность (или кретинизм) отношения не имеет.

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

    GoldFinch
    Иногда блок-схемы действительно очень полезны. Но не любой алгоритм ими можно нормально описать; правда, с помощью псевдокода тоже далеко не всегда всё будет понятно. Иногда лучше обычным русским (английским, китайским и т.д.) языком объяснить саму суть, идею алгоритма, а не давать код, пускай и псевдо, который эту идею реализует.
     
  16. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    amvoz
    Да можете и обо мне, не обижусь. И свои ошибки на кого-то не спихиваю. Только вот инструмент должен по возможности препятствовать ошибкам, а не способствовать им. Паскаль не допускает свалить всё в одну кучу -- и поневоле приходится раскладывать всё по полочкам. Да, текст программы длиннее получается, зато понятнее.
     
  17. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    SII
    1) возможны, но если кодер понимает что и к чему он присвивает - то этого не будет.
    2) булевой тип - тот же самый инт, 0 - это FALSE, любое другое значение - TRUE.
    3) кто ж доктор кодеру, что он плохо знает теорию. Если вы делаете ошибки в таких вещах - то это ваши проблемы, и не надо винить в этом язык :)
    4) очень редко приходится использовать a = b = c. а насчет ошибок = и == - см. п.3 :)
    5) Если кодеру не понятно что он написал - ему следует переработать алгоритм. Обычно больше двух индексных переменных в цикле for не использую, пример - писал выше, когда нужно одновременно пройтись по массиву сначала и с конца.
    В чем недостатки то?
     
  18. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    GoldFinch
    И я когда пишу сложный код - рисую блок-схемки на бумажке :)
     
  19. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    beginner
    Весьма странный подбор аргументов. С одной стороны восхищения излишествами допустимого синтаксиса for и возможностью объявления переменных по ходу дела, а с другой стороны оправдание необходимости скобок при вызове функций. Как-то нелогично ;)
    Мое имхо: паскаль в целом является более строгим и, не побоюсь этого слова - более низкоуровневым языком, чем абстрактно-стенографический ЦЦ :)
    Вопрос на засыпку: в асме можно по ходу дела переменные объявлять ? Ручками пушить\попить регистры или манипулировать с esp можно, а насчет LOCAL - извини, только в начале процедуры. И ничего, народ как-то кодит и не вопит о сверхнеудобствах ;)
    В отличие от заумного Ц, в паскале цикл for является аналогом асмовского loop, т.е. специальным простым случаем цикла с целочисленным счетчиком и фиксированным (заранее известным) числом итераций - об этом сказано и в справке и в любом учебнике, и соответсвенно никакие вольности и навороты в паскалевском for не допустимы, иначе это будет не for, а while или repeat
    Отсутствие скобок при вызове функций (по кр.мере в дельфи) это не обязаловка, а возможность, уступка тем, кому влом писать скобки там где и без них можно обойтись - хочешь указывай, хочешь нет
    И т.д. и т.п. Но в итоге простой "дубовый" синтаксис приводит к тому, что паскалевский компилятор работает намного быстрее любого сишного, которому приходится долго разбираться чего там юзе запихнул в одну строчку for :lol:
     
  20. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Я бы хотел иметь язык высокого уровня, как Pascal или ещё круче и выше. Только чтобы он работал у меня на всех машинах (хотя бы современных), чтобы в разных OC (в Linux в том числе) работал и чтобы кракозябров не повлялось никогда- пусть он сам за меня перекодирует все символы и сам кодировку консоли определяет и пусть среда программирования будет на русском языке. Тогдя я всё стерплю.
    Нет, всё-таки простота относительно функций пусть будет Сишная.