Balancer>> Каждый поощряет свои глюки
Пример с поощрением использования в Паскале имеющихся имён смотри выше
Zeus> Это НЕ поощрение использования повторяющихся имен. Если писать нормально и по правилам, а не после книжки "ххх для чайников". Язык делает менее удобным введение новых имян? Значит поощряет использование имеющихся. Точка.
Zeus> Короче, ты все еще утверждаешь, что "сишный" (символьный - вообще-то, именно с этого разговор начался, т.е. с "орфографии") синтаксис провоцирует меньше ошибок, чем "словарный"? Я утверждаю, что "символьный" синтаксис в разумных пределах оптимальнее "словарного". Противоположность "словарному" - это не Си, и даже не Perl. Это - APL, например. Вот Си находится как раз между "крайними символьными" и "крайними словарными" языками и, ИМХО, близок к оптимуму.
Balancer>> Глупости. Ни в одном сложном проекте ты заранее не распишешь и малой доли нужных переменных
Просто возможностей твоего мозга не хватит. Так что ты тут явно преувеличиваешь
Zeus> Что-то ты уводишь в сторону. Причем здесь проект, когда это решается на уровне функции? Именно о ней речь. Ещё раз скажу. Не знаю чем, но Паскалевский синтаксис провоцирует написание гиперимперативных программ. Паскалевцы не любят проводить декомпозицию. Более того, видел пару раз, как один и тот же человек писал на Си вполне факторизованные программки, с функциями, обычно, влезающими в пределы экрана, а на Паскале лепил простыни по 8 экранов. Я не знаю, с чем это связано, но это - мои наблюдения.
Zeus> Вот "проецировать не надо"
Я - не начну. Потому что понимаю, зачем это нужно (т.е. не нужно
) Нет, давай уже определимся. Тебе, как классическому ЧЛ, нужно ставить очень жёсткие начальные условия, а то в споре вы "вилять" начинаете
Ты утверждаешь, что
для тебя лично паскалевский синтаксис лучше? Так я не спорю! Дело вкуса. Но ты, вроде бы, перед этим пытался обощать, что этот синтаксис
вообще лучше? Вот с этим я буду спорить. Поэтому
твоё личное понимание в этом споре роли не играет. Важно, как и что понимает
среднестатистический программист.
Zeus> Вообще, меня бесит, когда при чтении текста я натыкаюсь на какую-то новую переменную. Одно дело - глянул в декларации, что да как, другое - рыскать по тексту в глубине операторов, где там она вводится, какого типа, где у нее scope... А я предпочитаю видет определение переменной в том месте, где она используется. Чем отлистывать потом назад к декларации, выискивать эту переменную в списке, возвращаться назад... Все сущности должны собираться в одном месте, а не размазываться по всей доступной им территории
Zeus> Кстати, по твоей задаче (большому проекту) есть еще одна практическая тонкость. Даже очень большой проект я всегда отлаживал "по живому" (ну, не считая совсем новых модулей или алгоритмов, но это редко, мы же о мелких изменениях говорим). На порядок большая скорость компиляции и сборки позволяет комфортно работать сразу с проектом. Не знаю. У меня вышеупомянутый проект, если без ошибок, собирается за 2..4 секунды. Другое дело, что, как я уже писал, сам запуск сервера - секунд тридцать. Запуск клиента - пара минут. А потом ещё тестирование... Но к языкам программирования непосредственно это не относится. Если проект сделать на Дельфи, а не на Яве, быстрее клиент запускаться не станет
Zeus> Ну и в чем синтаксис "Си" больше поощряет декомпозицию? Не знаю. М.б. тем, что там проще декларация функций и begin/end писать не нужно. Соответственно - меньше лени
![:) :)](http://s.wrk.ru/s/smile.gif)
Но факт есть факт - по моим наблюдениям в равных условиях, программы на Си более декомпозированы. Даже из соображений "лени мозга". В Си ввести новую функцию - это набить десяток-другой символов. В Паскале - и писать нужно больше, как я уже сказал, и, главное, ещё о твоих декларациях переменных думать придётся
![:D :D](http://s.wrk.ru/s/biggrin.gif)
А это всё снижает привлекательность введения новых функций.
Zeus> Не локальных переменных, а локальных "блоков", а еще точнее - просто определения локальных переменных в тексте функции. Пользу я вижу, но вижу и вред. "Польза" позволяет быстрее кодировать, но затрудняет все остальные операции и к тому же приводит к умственной лени. Когда что либо позволяет быстрее кодировать, то высвободившееся время можно потратить на
раздумья над проектом. А когда кодируешь медленнее, то и лишнего времени меньше. Не зря принцип гласит - "машина должна работать, человек - думать". Так что пусть лишнюю писанину твою возьмёт на себя компилятор. А ты - будешь думать
Zeus> Идиот - наверняка, но мы же не об идиотах говорим
Но и не о тебе же
![:) :)](http://s.wrk.ru/s/smile.gif)
См. выше. Среднестатистический программист по твоим определениям - идиот. Так что, наверное, мы говорим об идиотах
Zeus> В основном потому что средний уровень квалификации на них пишущих заметно ниже - по историческим, опять же, причинам. Ой, не знаю... Самый низкий уровень качества программ, тогда, на VB должен быть. А он примерно на одном уровне с Дельфи
Zeus> Вот запрет перекрытия - именно с умом, а не прихоть. Не знаю я такого ума
![:) :)](http://s.wrk.ru/s/smile.gif)
И очень рад, что в Java такого ограничения нет
>А вот скажи, исключение указателей в Джаве и вообще многих современных языках - это "с умом" или как?
Какие, нафиг, исключение, родной?? Да в Java
всё на указателях! Просто они там подразумеваются неявно. Если грубо, то int, double, float и т.п. - передаются значением. Но - только они. А, например, Integer, Double, Float - это уже полноценные объекты и передаются
всегда указателями.
В общем, после перехода на Java, я ещё
ни разу не столкнулся с проблемами нехватки указателей... Вот чего не хватало, пока с Reflection не столкнулся - так это вызова функций по имени, заданном в строке.
Balancer>> Остаётся удивиться, где он этот Оберон
[»] Zeus> Там же, где, скажем, BeOS. Цюрихский (или какой там) университет - это все же не Sun по ресурсам. […
Дальше »»»
… чтобы понять рекурсию, нужно сперва понять рекурсию …