|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Serg Belyaev 2:5015/166.7 08 Jan 2002 01:47:56 To : Miroslav Jorem Subject : Гоpодская олимпиада по инфоpматике --------------------------------------------------------------------------------
07-Jan-02 04:40:39, Miroslav Jorem wrote to Serg Belyaev
Subject: Гоpодская олимпиада по инфоpматике
SB>> е секрет, что знать С - признак "крутости". И после этого вы
SB>> хотите объективности? Этот убогий язык уже многих лишил
SB>> удовольствия от поисков красивых алгоритмов.
MJ> while((c = fgetc(File)) != EOF) {
MJ> ...
MJ> }
MJ> Запиши покрасивее, алгоритмист.
М-м-да уж...
Мне нужно:
while <нет конца файла> do <чего-то делаем>
Hа паскале это так и пишется:
while not eof(File) do ...
И зачем мне получение символа оформлять таким образом,
чтобы получать такую кашу - мне подобная "краткость"
не нужна. Имеются логические выражение, на которых
задается естественная для них функция с множеством значений
(ложь, истина). Рассмотрим логическое выражение
(c = fgetc(File)) != EOF
Слева стоит "чудовище". С одной стороны оно похоже на
оператор присваивания, но при этом от этого "бедного"
оператора требуют еще чего-то, чтобы его можно было
засунуть вот таким бесцеремонным способом в другую
конструкцию - авторы C наверное "тащились" от своего
"изобретения". Hо на этом "странности" не кончаются.
Оператор присваивания "отдает" значение "c", т.е.
тип этой _штуки_ - это char. Справа стоит EOF - это
далеко не типа char. Hо почему бы не "натянуть" для
"красоты" - пусть будет типа char. И смотрите, как
все хорошо получается! Из файла мы можем читать только
символы, так давайте договоримся, что когда из него
уже читать будет нечего, мы _будто_бы_ прочитаем
спецсимвол EOF. Ах, как ловко все получилось!
Hо это же обыкновенный обман. Я прихожу в кассу и
мне выдают спецбумажку с нарисованной дулей - говорят
это такая денежка.
MJ> PS: Эти два языка отличаются только синтаксисом => C не может
MJ> стимyлировать
MJ> к поискy красивых алгоритмов слабее, чем Паскаль. Объективности в твоём
MJ> высказывании тоже маловато как-то.
А паскаль и не стимулирует, но меньше мешает, чем C.
От языка прежде всего хотелось бы, чтобы его _не_замечал_
пишущий на нем человек. Люди, конечно, разные - некоторым
нравится вычурность, другим - простота.
MJ> C предлагает более полный набор операций над yказателями и более
MJ> гармоничный синтаксис в совокyпности с богатым набором операций;
Это, в общем-то, слабо относится к алгоритмам, а на стадии
реализации в Turbo Pascal-е достаточно средств для работы с
указателями. Кстати, на практике важен конкретный компилятор.
То, что было сделано Борландами - это не Виртовский паскаль.
Hо идея, во многом улучшенная, именно его. Простота,
уважение к _ДАHHЫМ_. Модульность началась с версии 4,
ОП с версии 5.5. 6-ой был не очень удачным, но сочетание
с ассемблерными вставками было приятным.
MJ> Hаличествyет
MJ> иерахическая область видимости переменных, в то время как в Паскале всё
MJ> надо
MJ> объявлять внавалкy в секции var; Есть некоторое подобие микроядерной
MJ> архитектyры
MJ> (Минимальный набор ключевых слов и операций. Остальное библиотека). Это
MJ> объективно.
Конкретная реализация такова (TP, BP), что нет никакой разницы
между предлагаемым набором операций и вновь создаваемыми -
расширяемость языка. Можно вспомнить великолепный расширяемый
язык - ФОРТ. Писал бы на нем, но читать плохо. А уж мощь ФОРТА
превышает мощь остальных ЯВУ.
Всего доброго,
<SVB> (Serg Belyaev)
--- Terminate 5.00/Pro
* Origin: (svb@sandy.ru) or (2:5015/166.7)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33779f2f15a7.html, оценка из 5, голосов 10
|