Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  12:06[Войти] | [Зарегистрироваться]
Обсуждение темы:
Вопросы оптимизации кода

Тема открыта по просьбе жителей Королевства и посвящена обсуждению вопросов оптимизации кода. Выставляйте свои лучшие и худшие тексты и не стесняйтесь их обсуждать. В споре рождается истина. Или, по крайней мере, оптимизация.

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 737 сообщений

Добавить свое сообщение

Отслеживать это обсуждение


Смотрите также обсуждения:
Тестирование проекта. Отладка.
  • Подводные камни
  • Централизованная обработка ошибок
  • Бета-тестирование
  • Давайте учиться на ошибках.
  • Почему программисты допускают ошибки?
  • Автоматизированные тесты для GUI
  • О системах контроля ошибок

  • <<<... | 697—688 | 687—678 | 677—668 | ...>>>
    Всего сообщений в теме: 737; страниц: 74; текущая страница: 6


    № 687   21-05-2009 00:10 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кстати, у меня есть один вопрос прямо по теме.
    Простой, можно сказать, учебный "детский" пример. Алгоритм последовательного поиска элемента в одномерном массиве. Понятно, что это можно написать десятью способами, которые будут отличаться по своей "эффективности" и "грамотности". Что выбрать в качестве "идеального" решения? У меня до сих пор нет окончательного мнения. Допустим для простоты, что мы ищем в массиве длины n первый по порядку элемент с нулевым значением, а индексация элементов начинается с единицы.

    Метод 1 (самый "дурацкий")
    с:=0;
    for i:=n downto 1 do
    if a[i]=0 then с:=i

    Метод 2.
    i:=1;
    while (i<=n) and (a[i]<>0) do i:=i+1
    Неплохо, но при отсутствии нулей проверка второго условия за границами массива будет исключена только при условии сокращенного вычисления булевых выражений, т.е. корректность написанного текста зависит от настроек компилятора. Насколько это грамотно?

    Метод 3.
    i:=1;
    while (a[i]<>0) and (i<=n) do i:=i+1
    Это уже не грамотно по указанной выше причине. При отсутствии нулей проверка первого условия будет некорректна после выхода i за границу массива.

    Метод 4.
    c:=0; i:=1;
    while (c=0) and (i<=n) do
    begin
    if a[i]=0 then c:=i;
    i:=i+1
    end
    Самый "длинный", но похоже самый "умный" из четырех.

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



    № 686   20-05-2009 23:34 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>И проявить чудеса изобредательности, объединяя этот зоопарк...

    У меня в этом году был пример "зоопарка". Правда работа была учебно-исследовательская, но это, мне кажется, особого значения не имеет. Был набор задач, которые надо было решать. Так вот. Мои "школяры" основную, "вычислительную" часть проекта делали на Haskell, а интерфейсы - на Delphi (так было проще и быстрее). И все получилось замечательно. Можно сказать принцип "Богу-богово, кесарю-кесарево" в программировании.


    № 685   20-05-2009 23:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Ну да ладно.
    >>>Продолжим: Паскаль - rulez, Си - оцтой :)
    Могу предложить хороший метод борьбы с этой "детской болезнью". Не надо вообще использовать названия языков. Вы просто пишете "некоторые" проекты с использованием "некоторых" языков. Сегодня Вы используете язык "X", а завтра язык "Y". Разумеется, кто-то из "отмороженных" может снова тыкать в Вас пальцем и кричать: X-рулез, Y-отстой. Но это уже как-то не звучит...


    № 684   20-05-2009 23:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>и в программе, реализующей несколько разнородных задач, одну п/п
    >>>написать на С, другую - на Питоне, третью - на Луа.

    В самой идее "смешивания" языков в рамках одного проекта нет ничего страшного. Особенно, если делать это грамотно. В конце концов именно в этом заключается основная идея dotNET. Тексты, написанные на "своих" языках транслируются компиляторами переднего плана в единый промежуточный код на языке MSIL. А компиляторам заднего плана (back-end) уже безразлично, на каких языках написаны исходники. У них на входе один язык - MSIL, а на выходе код для данной конкретной платформы.


    № 683   20-05-2009 22:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Например, английское school по глазам не бьет?

    Еще как бьет. Слово восходит к греческому "schole", которое является производным от "scholazo" - "отдыхать от труда". Из греческого оно попало в латынь, а из нее было заимствовано другими европейскими языками.


    № 682   20-05-2009 21:59 Ответить на это сообщение Ответить на это сообщение с цитированием
    Знать сильные и слабые стороны обоих языков. В идеале, владеть в равной степени обоими. Уметь подобрать правильный язык для конкретной задачи. ... и в программе, реализующей несколько разнородных задач, одну п/п написать на С, другую - на Питоне, третью - на Луа. И проявить чудеса изобредательности, объединяя этот зоопарк...


    № 681   20-05-2009 11:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 680« (Geo)
    ___________________________
    Меня в своё время больше удивило tender английское и тендiтный украинское.
    Слово такое первоначальное и в немецком и т.п. нет.
    Итальянский тенор...

    Ну да ладно.
    Продолжим: Паскаль - rulez, Си - оцтой :)


    № 680   20-05-2009 05:31 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 677« (Как слышно? Прием!)
    ___________________________
    >>> Посмотрел словарь
    Я тоже смотрел словарь ;-)

    >>> Оказывается, английский не такой уж и чистый
    Ну, латынь она всюду пролезла. Бог с ним, с малоизвестным катетом. А вот такое более известгное английское слово, как радиус, тоже латинизм. Но к этому уже привыкли.

    Но ангийский засорен не только латыню (и греческим, кстати), но и заимствованиями из других европейских языков. Например, английское school по глазам не бьет? А, например, слово "паштет" некоторое время назад в английском языке сохраняло французское написание (по карйней мере, в английских текстах я встречал именно французский вариант, включая спецсимволы, а не нынешнее paste).
     Geo


    № 679   20-05-2009 05:19 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 676« (Как слышно? Прием!)
    ___________________________
    >>> А в другой ветке только что о чистом английском проповедовали.
    Вопрос на засыпку: а как будет на английском слово "катет"? ;-)
     Geo


    № 678   20-05-2009 05:17 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 675« (Cepгей Poщин)
    ___________________________
    >>> Почему бы тогда не пойти еще дальше и избавиться от еще одного лишнего оператора присваивания и написать процедуру
    Безусловно. Если для реализации программы такой вариант подходит, то можно и так. Все зависит от конкретники и от способности восприятию интегрированной информации. Тот же самый пример из школьной математики. Учительница заставляла всех (кроме некоторых) обязательно фиксировать письменно все промежуточные действия. Благодаря этому люди допускали меньше ошибок. Но было несколько человек в классе, на которых это правило не распространялось: учительница знала, чсто эти люди способны в уме произвести несколько промежуточных преобразований и записать только конечный результат. А в институте я учился с парнем, у которого способности к выполнению математических преобразований в уме были еще лучше, чем у меня. Так он на простые задачи вообще сходу ответ давал, потому как все преобразования на автомате выполнял в уме.

    >>> А какие еще варианты могут быть?
    Знать сильные и слабые стороны обоих языков. В идеале, владеть в равной степени обоими. Уметь подобрать правильный язык для конкретной задачи. Но поскольку идеал не всегда достижим, то по крайней мере не заниматься детскими обобщениями, типа "Си -- гадость", "Паскаль -- отстой".
     Geo


    <<<... | 697—688 | 687—678 | 677—668 | ...>>>
    Всего сообщений в теме: 737; страниц: 74; текущая страница: 6


    Добавить свое сообщение

    Отслеживать это обсуждение

    Дополнительная навигация:
    Количество сообщений на странице

    Порядок сортировки сообщений
    Новое сообщение вверху списка (сетевая хронология)
    Первое сообщение вверху списка (обычная хронология)

    Перейти на конкретную страницу по номеру
      
    Время на сайте: GMT минус 5 часов

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

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования