Автор Тема: Про необходимость for(each)  (Прочитано 53865 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #75 : Февраль 11, 2012, 08:40:41 am »
А борьбой с велосипедостроением всегда занимаются как раз "мейнстримщики", панически боящиеся написания своего сложного кода, вместо применения библиотек, потому что понимают, что он будет содержать море ошибок.
Нет, не поэтому.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

alexus

  • Гость
Re: Про необходимость for(each)
« Ответ #76 : Февраль 11, 2012, 08:53:54 am »
Давайте, если ученик в автошколе хочет нажимать педаль тормоза левой ногой, позволим ему делать. Ведь даже нажатие педали - это не рутина, и здесь есть место для творчества!
Ох!.. Какой всплеск... Илья, Вы, пожалуйста, не путайте фантазии, тарабарщину, вольнодумие... и... творчество. Мне искренне жаль, что Вы не видите разницы во всём этом. Только помочь Вам разобраться я, увы, ничем не смогу. Ваша проблема, IMHO, что Вы всё постоянно сваливаете в одну кучу (кодирование, проектирование и моделирование, в частности), и потом с пафосом говорите: "Посмотрите, как это сложно!". Ну, конечно, сложно... именно сложно... иначе и быть не может.

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #77 : Февраль 11, 2012, 08:56:54 am »
А там (на оберонкоре) и не было никакого обсуждения. Илья завел новую тему в одном из разделов и там написал ответ на то, что обсуждалось тут, у нас. То есть на оберонкоре было ровно одно письмо в одной теме. Почти моментально тема была удалена (видимо "вернули автору на доработку"), после чего в уже доработанном виде (убрали ссылку на наш форум) ответ появился в новой теме в другом разделе.
Им там надо прописать в правилах "Ссылки на oberspace.dyndns.org будут беспощадно удаляться. Но цитирование разрешено".
Сорри за офтоп.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #78 : Февраль 11, 2012, 09:07:51 am »
А там (на оберонкоре) и не было никакого обсуждения. Илья завел новую тему в одном из разделов и там написал ответ на то, что обсуждалось тут, у нас. То есть на оберонкоре было ровно одно письмо в одной теме. Почти моментально тема была удалена (видимо "вернули автору на доработку"), после чего в уже доработанном виде (убрали ссылку на наш форум) ответ появился в новой теме в другом разделе.
Им там надо прописать в правилах "Ссылки на oberspace.dyndns.org будут беспощадно удаляться. Но цитирование разрешено".
Сорри за офтоп.
Угу. Чтобы оффтоп не разводить, ответил тут: http://oberspace.dyndns.org/index.php/topic,167.msg3187.html#msg3187
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #79 : Февраль 11, 2012, 09:20:17 am »
Ваша проблема, IMHO, что Вы всё постоянно сваливаете в одну кучу (кодирование, проектирование и моделирование, в частности)

Нет, я просто пытаюсь сначала навести порядок в кодировании, а потом над надёжным процессом кодирования надстраивать всё остальное.

Это как если в строительстве какая-нибудь исследовательская группа на время(!) пренебрегает всем, кроме изучения и внедрения новых конструкционных материалов. А затем свойства этих новых материалов должны позволить значительно изменить проектирование зданий, ввиду, например, возможности делать огромные конструкции без опор... Надеюсь, аналогия понятна?

Ещё можно сказать так, что я мечтаю достичь целей, скажем, 4GL-подходов, совместив 3GL-инструмент с соответствующими методами работы на нём. Т.е. в 4GL: описали высокоуровнево решение задачи - оно работает. Я бы хотел: придумали высокоуровнево решение задачи, без усилий и вариаций закодировали его на 3GL.
4GL имеет недостатком необходимость особого инструмента под каждую сферу применения.
3GL + методика работы с ним этого недостатка лишены.

alexus

  • Гость
Re: Про необходимость for(each)
« Ответ #80 : Февраль 11, 2012, 09:30:58 am »
Ваша проблема, IMHO, что Вы всё постоянно сваливаете в одну кучу (кодирование, проектирование и моделирование, в частности)
Нет, я просто пытаюсь сначала навести порядок в кодировании, а потом над надёжным процессом кодирования надстраивать всё остальное.
Рекомендую помнить афоризм К. Пруткова: "Специалист подобен флюсу".

Это как если в строительстве какая-нибудь исследовательская группа на время(!) пренебрегает всем, кроме изучения и внедрения новых конструкционных материалов. А затем свойства этих новых материалов должны позволить значительно изменить проектирование зданий, ввиду, например, возможности делать огромные конструкции без опор... Надеюсь, аналогия понятна?
Угу... понятна... Главное, чтобы заказчики потом не забросали тухлыми яйцами... если вдруг изучение и внедрение затянутся.

Ещё можно сказать так, что я мечтаю достичь целей, скажем, 4GL-подходов, совместив 3GL-инструмент с соответствующими методами работы на нём. Т.е. в 4GL: описали высокоуровнево решение задачи - оно работает. Я бы хотел: придумали высокоуровнево решение задачи, без усилий и вариаций закодировали его на 3GL.
4GL имеет недостатком необходимость особого инструмента под каждую сферу применения.
3GL + методика работы с ним этого недостатка лишены.
И кто же это меня упрекает... за желание "всего и сразу"... :)

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #81 : Февраль 11, 2012, 11:42:07 am »
Вот тут где-то советовали начинающим программистам пользоваться языком без сборки мусора. А что, это его (начинающего) главная цель? Освоить ручное управление памятью.

Конечно не главная. Но иметь представление важно для понимания других вещей. Во всяком случае если речь идет о чем-то более углубленном, нежели школьный курс информатики.
Что значит углублённая? Специализированная, не фундаментальная. И где-то это нужно, конечно, но не везде. И не навсегда. Где теперь перфокарты?

Конечно, для обучения очень хорошая задачка. Не сложная, допускающая разные решения и понятная. Но в производственном (production) коде использовать для ее решения что-то кроме стандартного sort - просто невежество.
А я не уверен пока, что задачка хорошая. Перефразируя то, что я говорил про обучение выше, можно сказать так: если будущий программист получил ответ в виде кода, то это ещё не решение. Решением будет ответ не в виде кода, а в виде чего-то в голове, что можно преобразовать в код.

Схему кода можно запомнить и использовать бездумно, значит, нет гарантии, что имея код, начинающий действительно понимает, что же всё-таки за задача у него была.

А если предоставить решение задачи хотя бы самому себе (и если она довольн сложная, то визуализировать её в коде или графом), то потом не опасно воспользоваться функцией сортировки из стандартной библиотеки: мы убедились, что задача действительно заключена в сортировке.

Пример с сортировкой в реальной задаче несколько надуман, но я постоянно встречаю в нашей команде код, который можно было бы переписасть со стандартных библиотечных вызовов на стандартные же. Причём, неплохо всё бы упростил. Вот, что важно. Почему рождается запутанный код? Маловероятно, что из-за недостаточной сообразительности. Скорее, из-за не до конца решённой подзадачи. Их и вправду не так-то просто решать. Я, например, довольно часто прихожу в последствии к выводу, что и сам не решив задачи бросился её кодировать. И библиотеки не помогут решить задачи, потому что решение появляется не на экране, а в голове. А раз библиотеки не помогают в решении, то и в обучении программированию место найти для их использования проблематично.

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

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #82 : Февраль 11, 2012, 11:49:23 am »
Рекомендую помнить афоризм К. Пруткова: "Специалист подобен флюсу".
Афоризм обычного сноба, если вдуматься в определения слов с сегодняшней позиции. Это наезд на всех, кто вообще работает.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #83 : Февраль 11, 2012, 11:51:36 am »
Но если Вы всё же найдёте причину использовать библиотеки для решения, то подскажите библиотеку, занимающуюся сбором мусора и таким образом избавляющую программиста от решения этой задачи : ).
А такие библиотеки, кстати, есть. Но ведь речь не о об этом :-) Речь о навыке убирать за собой. Найдите мне библиотеку, или язык, или фреймворк который будет собирать не только память но и все остальные ресурсы. Своевременно собирать.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

alexus

  • Гость
Re: Про необходимость for(each)
« Ответ #84 : Февраль 11, 2012, 12:05:56 pm »
Рекомендую помнить афоризм К. Пруткова: "Специалист подобен флюсу".
Афоризм обычного сноба, если вдуматься в определения слов с сегодняшней позиции. Это наезд на всех, кто вообще работает.
  • Это вообще не наезд, а признание реальных фактов;
  • Каждый специалист смотрит на жизнь под определённым углом (в силу специфики своего рода деятельности);
  • Снобизм (самодовольство) не имеет отношения к данному афоризму.

DIzer

  • Гость
Re: Про необходимость for(each)
« Ответ #85 : Февраль 11, 2012, 12:18:40 pm »
А я не уверен пока, что задачка хорошая. Перефразируя то, что я говорил про обучение выше, можно сказать так: если будущий программист получил ответ в виде кода, то это ещё не решение. Решением будет ответ не в виде кода, а в виде чего-то в голове, что можно преобразовать в код.


Задача для обучения  хорошая - но обучению не кодированию , а анализу ситуации и контролю качества усвоения даваемого теоретического материала.

DIzer

  • Гость
Re: Про необходимость for(each)
« Ответ #86 : Февраль 11, 2012, 12:33:37 pm »
Перефразируя то, что я говорил про обучение выше, можно сказать так: если будущий программист получил ответ в виде кода, то это ещё не решение. Решением будет ответ не в виде кода, а в виде чего-то в голове, что можно преобразовать в код.

Так я вами и продемонстрировал ход мыслей ведущих к ВЫБОРУ, и даже показал что НЕБОЛЬШАЯ  ВЫСОКОУРОВНЕВАЯ модификация СТАНДАРТНОГО подхода гораздо нагляднее и ЭФФЕКТИВНЕЕ в смысле производительности (ОДНОПРОХОДНОГО наколенника), а ведь  производительность это решение можно улучшить просто перейдя на уровень НИЖЕ (на модели языков СИ|C++) -  просто на обратном ходе заполнять непрерывный кусок памяти(выделяемые под массив) - значениями , как предлагал Алексей.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #87 : Февраль 11, 2012, 03:29:49 pm »
Так я вами и продемонстрировал ход мыслей ведущих к ВЫБОРУ, и даже показал что НЕБОЛЬШАЯ  ВЫСОКОУРОВНЕВАЯ модификация СТАНДАРТНОГО подхода гораздо нагляднее и ЭФФЕКТИВНЕЕ в смысле производительности (ОДНОПРОХОДНОГО наколенника), а ведь  производительность это решение можно улучшить просто перейдя на уровень НИЖЕ (на модели языков СИ|C++) -  просто на обратном ходе заполнять непрерывный кусок памяти(выделяемые под массив) - значениями , как предлагал Алексей.
А я ничего против выбора как такового не имел. Лень сейчас искать тот Ваш пост. Помню, что если и не полностью, то хотя бы частично с ним я согласен. Любой инженер должен грамотно подходить к выбору. Проблема с ним только одна: задача выбора - это не исходная задача. А какая исходная? Поиск? Сортировка? Если сортировка, то по возрастанию или в ином порядке (напр, сначала чётные, а потом нечётные)? То есть, сначала нужно с этим разобраться. Потом полученное решение классифицировать и лишь затем переходим к выбору приемлемого решения из данного класса. Каждое из этих действий необходимо. Но только второе и третье обычно идут проще, чем первое.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #88 : Февраль 12, 2012, 02:59:09 am »
Конечно не главная. Но иметь представление важно для понимания других вещей. Во всяком случае если речь идет о чем-то более углубленном, нежели школьный курс информатики.
Что значит углублённая? Специализированная, не фундаментальная. И где-то это нужно, конечно, но не везде. И не навсегда. Где теперь перфокарты?

Углубленная - значит на выходе будет специалист, имеющий непосредственное отношение к созданию ПО. А что перфокарты? При условии понимании "основ" - про перфокарты и зачем они были нужны можно рассказать глядя на картинку и не вдаваясь в исторические справки :)

Пример с сортировкой в реальной задаче несколько надуман, но я постоянно встречаю в нашей команде код, который можно было бы переписасть со стандартных библиотечных вызовов на стандартные же. Причём, неплохо всё бы упростил. Вот, что важно. Почему рождается запутанный код? Маловероятно, что из-за недостаточной сообразительности. Скорее, из-за не до конца решённой подзадачи.

У меня ощущение, что самой частой причиной рождения запутанного/сложного кода является отсутствие критической обратной связи при его написании. Когда красивую картинку решения в голове пытаются отлить в код, а оно не отливается (становится совсем некрасивым и непонятным). Но вместо того, что сделать шаг назад и подвергнуть критике эту красивую картинку - берут кувалду и таки придают нужную форму изделию. А последующие итерации еще больше цементируют какашку, глядя на которую первоначальную красивую идею через какое-то время не вспомнит даже автор.

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Про необходимость for(each)
« Ответ #89 : Февраль 12, 2012, 05:49:26 am »
По-моему, смешиваются две отдельных вопроса: техническое умение строить циклы и все остальное, где можно ошибиться.