OberonCore https://forum.oberoncore.ru/ |
|
Подскажите какой язык программирования выбрать? https://forum.oberoncore.ru/viewtopic.php?f=35&t=1391 |
Страница 4 из 5 |
Автор: | Евгений Темиргалеев [ Среда, 01 Апрель, 2009 14:00 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Уважаемый Валерий Лаптев сообщил главный принцип экстремальнго программирования: "сначала тесты, потом код." Уважаемый Madzi сообщил, что он с таким подходом не согласен, его принцип "сначала алгоритм, потом код, а потом уж тесты (если очень хочется).". Братцы, каждый поделился своими знаниями/мнениями. Большая просьба - публичных споров здесь не начинать. |
Автор: | Илья Ермаков [ Среда, 01 Апрель, 2009 15:52 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Вообще-то, правильно сначала алгоритм, потом код, а потом уж тесты (если очень хочется). Не всегда. Иногда даже правильно поставить задачу на алгоритмизацию трудно без формулировки разных примеров. Часто каких-то особых случаев. Потом эти особые случаи будут дополнительным ориентиром на всех этапах, чтоб не ошибиться и всё учесть. Конкретная опора мозгам тоже нужна. Конечно, если задача абсолютно "однородна" на всей области входных параметров, то можно и не заморачиваться заранее. |
Автор: | Vlad [ Среда, 01 Апрель, 2009 16:41 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Vlad писал(а): Блин, да поймите вы, программирование - это не только математика. Если бы все так было просто... Да, это ещё и физика, только вот другие этого понять не могут и удивляются почему это у них программы не работают когда они киллометры с килограммами мешают (образно конечно). Если компилятор не проверяет сложение килограммов с километрами (что мы и имеем в случае оберона, кстати), то тестирование - единственный эффективный способ заставить работать такую "физическую" программу. Madzi писал(а): Но математике всё-таки больше, в том числе дискретной и мат.логики, просто "программисты" считают достаточным знание языка программирования, и не хотят загружать себя "лишними" знаниями. Про нежелание загружать себя лишними "знаниями" - это скорее к некоторым оберонщикам, которые ведутся на пропаганду простоты и отказ от всего "лишнего", и думают, что оберон поможет им не учиться всяким сложным вещам типа юнит-тестирования Madzi писал(а): У меня понятия о тестировании самые разнообразные, поскольку я участвовал в разных проектах от академических до индустриальных Не верю (с) При все уважении. Можно писать без тестов (и пишут, и даже на C), но это неэффективно. Каменный век. И чем сложнее система - тем большее значение имеют автоматические тесты. Madzi писал(а): , но лично я предпочитаю тестировать программу на бумаге, до того как она будет реализована в языке на машине, а затем, следует проверка правильности набивки. При этом программа в 99% работает правильно с первого раза, сразу после набивки. и лишь 1% когда требуется некотороая переработка (было когда оказались ошибки в спецификациях в документации). И вы говорите, что участвовали в каких-то реальных проектах? Ошибки/недодумки/недосказки в спецификациях - это и есть те самые 99% багов. Или вы действительно думаете, что в юнит тестах на C++ я тестирую выход за границы массивов, нарушение типизации, обращение по невалидному указателю, циклы с break и прочие ужасы С++, от которых (якобы) избавлен оберон? Вот смотрите. У вас есть замечательная функция: parent_directory(path), которая как и следует из названия возращает директорию одного уровня выше для пути. Замечательна эта функция тем, что она математически доказана на бумажке, закодирована в лучших традициях Дейкстры и даже снабжена комментарием. Такая идиллия продолжается пару лет, пока ваш коллега (который работает совсем над другим проектом, но с которым у вас общая библиотека) не обнаруживает, что функция неправильно работает для случая вот такого пути: "c:\dir1\dir2\". А именно - она возвращает "c:\dir1\dir2". В комментарии такой случай (слэш на конце) не описан, в математическом доказательстве на бумажке (это конечно из области фантастики, но допустим, что ваш коллега эту бумажку умудрился откопать) - такой случай тоже никак не фигурирует. Исполненный уверенности, что он исправляет "багу", ваш коллега исправляет функцию (и прикладывает новую бумажку с новым доказательством) так, что она начинает возвращать "c:\dir1". Через полгода вам звонит клиент и говорит, что ваша !@#$% программа удалила ему папку "Мои документы" с очень важными документами. Вы начинаете разбираться и находите этот "фикс" вашего коллеги (это при условии, что вы пользуетесь какой-нибудь CVS, хотя тут некоторые утверждали, что при использовании оберона она им нафиг не нужна). Вы приходите к коллеге и начинаете ругаться, на что он вам выкатывает "железный" аргумент в пользу своей невиновности: безупречное математическое доказательство на бумажке |
Автор: | Vlad [ Среда, 01 Апрель, 2009 16:53 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Info21 писал(а): Конечно, test-driven development -- очередное открытие старого инженерного колеса программерами. Подаваемое, как обычно, как сугубое откровение. А как же. Да никто его не подает как откровение. Просто оберонщики склонны преувеличивать роль языка в разработке. Юнит-тестирование им стало уже не нужно, блин... |
Автор: | Vlad [ Среда, 01 Апрель, 2009 16:59 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Вообще-то, правильно сначала алгоритм, потом код, а потом уж тесты (если очень хочется). Почитайте про BDD. В смысле я не предлагаю какой-нибудь труд на эту тему изучить, а просто, посмотреть что это такое. Для расширения кругозора. Madzi писал(а): Это называется несоответствие ТЗ. И доказвать что-либо в данном случае глупо. Заказчику не нужно соответствие ТЗ (которое скорее всего вы сами и составите). Ему нужна программа для решения его задач. Madzi писал(а): А ещё представте себе кошмар, существуют языки в которых нет поддержки исключений. И на них даже программы пишут, и сложные. И даже операционные системы C. |
Автор: | Евгений Темиргалеев [ Среда, 01 Апрель, 2009 17:17 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Вот пришёл наш Фома Vlad писал(а): Не верю (с) и клеветникVlad писал(а): ...Просто оберонщики склонны преувеличивать роль языка в разработке. Юнит-тестирование им стало уже не нужно, блин... Он сначала решает за "обернщиков" что им нужно или не нужно. И, на основе собственных выводов, начинает строить критику.
|
Автор: | Vlad [ Среда, 01 Апрель, 2009 17:22 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Евгений Темиргалеев писал(а): клеветник Поздравляю со вступлением в ряды верующих под флаг info21 |
Автор: | Madzi [ Среда, 01 Апрель, 2009 17:26 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Можете не верить. Я вас прекрасно понимаю, потому что работал в команде с такими людьми. Для вас мир уже состоялся и пытаться вас переубедить глупо. Тем более, что в коллективной работе, когда работают программисты разного уровня и язык (С++) не способен "утирать сопли" каждому новичку ничего кроме тестирования не остаётся. Как бы профессионалы не исхищрались над своими кусками. Но есть другой мир и другие подходы. Когда каждую ночь идёт сборка проекта и не дай бог туда кто-то положил не протестированный модуль, который не даст проекту собраться, - это маразм. Я против такого программирования, хотя и вынужден иногда в нём участвовать. Именно по этому поводу я и пишу: ТЕСТИРОВАНИЕ - ФИГНЯ. И ничего более. |
Автор: | Vlad [ Среда, 01 Апрель, 2009 17:39 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Можете не верить. Я вас прекрасно понимаю, потому что работал в команде с такими людьми. Для вас мир уже состоялся и пытаться вас переубедить глупо. Тем более, что в коллективной работе, когда работают программисты разного уровня и язык (С++) не способен "утирать сопли" каждому новичку ничего кроме тестирования не остаётся. Гхм. Новички - это конечно серьезный фактор (особенно для C++). Но не в моем случае. В моей команде все имеют инженерный уровень выше среднего. Все понимают важность тестирования, в том числе и юнит. Madzi писал(а): Когда каждую ночь идёт сборка проекта и не дай бог туда кто-то положил не протестированный модуль, который не даст проекту собраться, - это маразм. Гхм. Это вы к чему? Каким боком сборка проекта к юнит-тестированию? Madzi писал(а): Я против такого программирования, хотя и вынужден иногда в нём участвовать. Именно по этому поводу я и пишу: ТЕСТИРОВАНИЕ - ФИГНЯ. И ничего более. Ну расскажите, что вы используете вместо тестирования. Бумажку? Ну так я вам подробно рассказал, почему бумажки не решают всех проблем, которые решает тестирование. Не хотите видеть этих проблем? Тогда присоединяйтесь к рядам верующих |
Автор: | Сергей Губанов [ Среда, 01 Апрель, 2009 17:54 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Vlad писал(а): Евгений Темиргалеев писал(а): клеветник Поздравляю со вступлением в ряды верующих под флаг info21 Info21 писал(а): Любое формальное доказательство очень даже чревато ошибками в силу своей занудности. Живой организм как ни старается, но всё-таки не терпит занудности. Тестирование как дополнение к систематическим методам программироваия -- поэтому необходимо. Бессовестный клеветник!
|
Автор: | Vlad [ Среда, 01 Апрель, 2009 18:15 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Сергей Губанов писал(а): Info21 писал(а): Тестирование как дополнение к систематическим методам программироваия -- поэтому необходимо. Бессовестный клеветник!Ну что ж поделаешь, и info21 может сказать правильную вещь. |
Автор: | Валерий Лаптев [ Среда, 01 Апрель, 2009 18:21 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Info21 писал(а): Все правы Конечно, test-driven development -- очередное открытие старого инженерного колеса программерами. Подаваемое, как обычно, как сугубое откровение. А как же. Или воспринимаемое как откровение -- и тут странная параллель между массами молодых программеров и массами революционных курсисток-энтуазисток. (Это к социологии сферы ИТ.) Пара замечаний. Любое формальное доказательство очень даже чревато ошибками в силу своей занудности. Живой организм как ни старается, но всё-таки не терпит занудности. Тестирование как дополнение к систематическим методам программироваия -- поэтому необходимо. Но еще необходимее -- подвергать молодые организмы жестокому обучению систематическим методам -- желательно до того, как они корень "bug" в любом варианте услышат. Ну, и, конечно, другое дело, что когда в дело включаются манагеры. Тут любой смысл начинает вырождаться в свою противоположность. 1. Да, про ХР - верно. Западники подали это как некое откровение в технологии разработки. Хотя мы аналогично работали еще в начале 80-х. И парами, и маленькие шажки, и одновременно с реальным кодом сразу и тестовый код клепали. По другому было не выкрутиться при написании оси восьмеричными кодами. 2. Категорически согласен с последней фразой: "жестокое обучение систематическим методам". К сожалению в наш век "демократии", которая как ржа пролезла в образование, "жестоко" обучать достаточно сложно. Воплей много о "жестоком" обращении с детьми и даже с 20-тилетними дылдами-студентами... Разве что автоматизировать эту "жестокость" . |
Автор: | Валерий Лаптев [ Среда, 01 Апрель, 2009 18:29 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Vlad писал(а): Сергей Губанов писал(а): Info21 писал(а): Тестирование как дополнение к систематическим методам программироваия -- поэтому необходимо. Бессовестный клеветник!Ну что ж поделаешь, и info21 может сказать правильную вещь. Он обычно всегда говорит правильные вещи... |
Автор: | Vlad [ Среда, 01 Апрель, 2009 20:05 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Валерий Лаптев писал(а): Он обычно всегда говорит правильные вещи... Да? А я несколько удивился, не услышав привычного: "читайте Дейкстру и тестирование вам будет не нужно". |
Автор: | Илья Ермаков [ Среда, 01 Апрель, 2009 20:21 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Роль разная у тестирования. Одно дело - гонять тестами "на излом" по стыкам компонент, по граничным ситуациям и прочим неожиданностям, которые всегда будут "по закону подлости". Т.к. свойственно нам всем ошибаться. Другое дело - пытаться убрать ошибки из ляп-тяп построенных алгоритмов. Т.е. тестированием довести до кондиции систему, которая гнилая в "материале" - т.е. в каждом компоненте. Разница принципиальна. В первом случае тестирование убирает неожиданные ошибки. Во втором его пытаются применить, чтобы убрать вполне предсказуемые (при неумении программировать) ошибки. Человека, не умеющего обсчитать профиль самолёта, никто даже не подпустит к изготовлению макета и обдувке в трубе А в ИТ многие считают, что труба заменяет расчёты. |
Автор: | Валерий Лаптев [ Четверг, 02 Апрель, 2009 09:27 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Vlad писал(а): Валерий Лаптев писал(а): Он обычно всегда говорит правильные вещи... Да? А я несколько удивился, не услышав привычного: "читайте Дейкстру и тестирование вам будет не нужно". Дейкстру по любому читать нужно. Помнится, я при прочтении его книжки испытал шок. Но от Дейкстры до тогдашнего реального программирования на PL-1 это было так же далеко, как до Солнца. Тем не менее, стремиться к этому нужно. Хотя в больших проектах без тестирования, естественно, не обойтись. |
Автор: | Валерий Лаптев [ Четверг, 02 Апрель, 2009 09:29 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Илья Ермаков писал(а): Роль разная у тестирования. Человека, не умеющего обсчитать профиль самолёта, никто даже не подпустит к изготовлению макета и обдувке в трубе А в ИТ многие считают, что труба заменяет расчёты. Какое ТОЧНОЕ сравнение! |
Автор: | Alexey_Donskoy [ Четверг, 02 Апрель, 2009 11:09 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Хотел тут ответить, но уже сильно не по теме получается. В общем, кому интересно про проектирование, тестирование и иже с ними, прошу вот сюда: viewtopic.php?p=26835 ! |
Автор: | Trurl [ Четверг, 02 Апрель, 2009 16:43 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Vlad писал(а): Вот смотрите. У вас есть замечательная функция: parent_directory(path), которая как и следует из названия возращает директорию одного уровня выше для пути. ... Вы приходите к коллеге и начинаете ругаться, на что он вам выкатывает "железный" аргумент в пользу своей невиновности: безупречное математическое доказательство на бумажке И что изменится если вместо "безупречного математического доказательства" будет длинный список пройденных тестов? |
Автор: | Валерий Лаптев [ Четверг, 02 Апрель, 2009 16:47 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Trurl писал(а): Vlad писал(а): Вот смотрите. У вас есть замечательная функция: parent_directory(path), которая как и следует из названия возращает директорию одного уровня выше для пути. ... Вы приходите к коллеге и начинаете ругаться, на что он вам выкатывает "железный" аргумент в пользу своей невиновности: безупречное математическое доказательство на бумажке И что изменится если вместо "безупречного математического доказательства" будет длинный список пройденных тестов? Тестирование никогда не докажет отсутствие ошибок, а только их наличие. А исчерпывающее тестирование невозможно. Мысль эту впервые тоже, между прочим, высказал Дейкстра. |
Страница 4 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |