OSDev

для всех
Текущее время: 25 сен 2020, 00:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 10 апр 2013, 22:06 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 963
Откуда: Дагоба
Приведенный код - это гротеск. Утрированная ситуация. Я согласен, что бывает хороший и понятный код, который приятно посмотреть, однако, это - исключение из правила. В подавляющем большинстве случаев программисты работают по принципу грубой силы, не вдаваясь в теорию, не анализируя алгоритм, не изучая документацию и даже не комментируя ключевые моменты своего "творения". На выходе получается ужасный код, такой что даже сам автор через месяц-другой уже не способен его понять. Если что-то требуется в нём поправить, он не разбирается в алгоритме и связях между модулями, а трассирует до нужного места и вставляет туда заплатку, даже не заморачиваясь, как она сопрягается со всей структурой. Сама заплатка уже получается бесструктурной, а через некоторое время весь проект получается состоящим из одних заплаток. Вот на этом этапе работу проекта уже практически невозможно понять при всём желании.
Такова практика.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 11 апр 2013, 02:10 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Yoda писал(а):
Такова практика.

Создавая творение, программист не станет накладывать заплатку не разобравшись во всей структуре. Тут вопрос об отношении к проекту - халтура над чужим проектом за ЗП или работа на себя и на перспективу. Соответственно и подход разный. Но вообще, руководителям в нормальных фирмах эти вещи понятны, и решаются административным принуждением писать комментированный код. Вот фирмы бывают разные, это да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 11 апр 2013, 10:48 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 963
Откуда: Дагоба
ОК, ты говоришь об отношении к проекту. Давай рассмотрим эту сторону.
В большинстве крупных коммерческих проектов работа программиста - по определению халтура почти для всей команды, за исключением ситуации, когда собралась небольшая группа единомышленников. В истории я могу привести только очень небольшое количество примеров второго типа - на ум мне приходят только разработчики DOOM и разработчики первых версий C и Unix. Для проектов первого типа всё зависит от жёсткости менеджмента и уровня материальной стимуляции работников. Менеджер проекта - человек и здесь мы переходим к роли личности. Если рассматривать не только программирование, а вообще все сферы человеческой деятельности (для наглядности), то очевидно, что хороших руководителей (чего угодно, возьмём, например, управление страной) можно также сосчитать по пальцам. В основном либо бараны, либо мошенники.
Далее рассмотрим некоммерческие проекты. В них работники могут работать за зарплату (например, работа в коммерческой компании над свободным продуктом), тогда мы возвращаемся к первому рассмотению, или же бесплатно. В этом случае исчезает основной способ воздействия менеджмента на сотрудников, либо полное отсутствие менеджмента. При полном отсутствии менеджмента имеем хаос. Пример - КолибриОС. В более-менее успешных проектах менеджмент есть. Что может менеджмент в условиях отсутсвия способов воздействия? Только одно из двух - либо принять предложенную правку, либо отвергнуть. Оно не может сказать - "такс, вот эта работа сейчас самая важная, ты и ты делаете её, причём сделать надо вот так, а ты проанализируешь продукцию конкурентов и сделаешь доклад по основным функциям". Увы! Кто-то пишет кусок кода, отправляет патч. А менеджмент действует по принципу "дарёному коду в скобки не смотрят". Скорей всего, он будет отвергнут, только если явно ошибочен.
Остались проекты, создаваемые одиночками. Если одиночка непрофессионал, он скорей всего не напишет код, который можно читать. Самое лучшее, что может быть - это идея, заложенная в проект, но её лучше передать словами, чем читать код непрофессионала.
Если одиночка профессионал, то здесь мы упираемся в психологию само-менеджмента. Профессионал сможет написать хорошо читаемый и понятный код, если он умеет встроить себя в определённые рамки, заставить писать комментарии, создать сначала структуру, а потом мясо и не боится переделать структуру, пока она ещё может быть изменена. Чаще же всего даже профессионал работает с мыслью "скорей-скорей". Вот у него что-то заработало, он спешит добавить какую-то функцию, вот уже тысяча строк кода, он начинает понимать, что он плохо продумал структуру с самого начала, но переделывать долго, да и после глобальной переделки надо всё заново проверять и отлаживать, лучше он добавит ещё пару функций. Человеку внутренне свойственно откладывать работу, не приводящую к немедленному результату, на "потом". Именно это его и губит. На этом, кстати, основана и психология компьютерных игр - человек относительно легко и быстро получает грандиозные результаты, не достижимые в настоящей жизни, поэтому он лучше поиграет, чем поработает. Итак, даже профессионал-одиночка в большинстве случаев сделает код, в котором будет потом трудно разобраться.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 11 апр 2013, 15:44 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Существует физическое ограничение на быдлокод, связанное с тем, что недокументированный код бесполезен при командной разработке. Без документации другие участники проекта не смогут использовать твои модули. Недокументированный код чаще возникает при одиночной разработке, ведь контроля ни какого, даже со стороны рядовых сотрудников.
Я лично пишу мало комментариев, но стараюсь писать текст кода так, чтобы он получался как бы самодокументированным. А для сложных проектов вообще требуются не комментарии, а общее описание принципа работы системы, без этого мало что понятно рассматривая отдельные процедуры даже с комментариями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 11 апр 2013, 23:33 

Зарегистрирован: 19 май 2011, 14:54
Сообщения: 73
Не важно работает человек за зарплату или нет. Программируя на себя не станешь лучшим программистом, чем работая в компании. Работая одиночкой или в мелкой компании подцепляешь всякие негативные стереотипы. Сегодня разработка программных продуктов уже более-менее отработана, не то, что 10-15 лет назад. В любом хорошем управляемом проекте есть проектная документация. Проектная документация делается и со стороны заказчика и со стороны разработчика. Заказчик пишет как он понимает то, что ему нужно, разработчик, со своей стороны описывает как он это собирается реализовывать. Поддерживаемые протоколы, взаимодействия и т.д. Детализация на уровне функциональных блоков, списков поддерживаемых функций, протоколов, форматов входных выходных данных, ошибочных ситуаций и т.д. Документация по отдельным проектам на 3-4 календарных месяца достигает иногда 300 или более страниц. (При длительных проектах как правило на каждого разработчика приходится по документу страниц в 150 - 300). Что касается разработки отдельных конкретных модулей, тут глубокой документации как правило не делается, не видел проектов, которые бы сумели сделать на этом уровне документацию, отражающую действительность.

Вместо документации на сам код, сегодня применяется юнит-тестирование и интеграционное тестирование, а также Continuous Integration сервера. В функциональность Continuous Integration сервера входит автоматический билд системы при изменении исходников в системе контроля версий, автоматическом прогоне юнит тестов, интеграционных тестов, если таковые автоматизированные имеются. Но это еще не всё.

Кроме того, чтобы проводить юнит тесты существуют, к примеру библиотеки типа Mockito, позволяющие для любого даже пустого интерфейса создавать mock-объект и задавать принудительно возврат нужного результата операции внутри метода или например выбрасывание исключения и т.д.. Есть также возможности создавать spy - объекты на основе существующих объектов, для изменения только некоторых методов, есть возможность проверить а вызвался ли такой-то метод такого то объекта с указанными параметрами с сколько раз....

Но тесты еще не все. Без грамотного отображения их результатов в них не было бы смысла. Существуют такие программные продукты как Cobertura для Java, позволяющие отображать на веб-странице покрытие исходного кода тестами. Причем отображать не просто покрытие абы как. А вплоть до каждого ветвления и каждой строчки.

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

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

Кроме юнит тестирования и интеграционного тестирования, существует еще функциональное тестирование и приемочное тестирование. На тесты пишется отдельная документация иной раз превышающая по размерам девелоперскую. Все это тщательно согласовывается с заказчиком, а для тестов применяются другие технолологии. Но это уже в Q&A и глубоко в этой сфере я уже не кручусь.

Многих подобных технологий 10 лет назад не существовало. Сегодня наличие упомянутых средств, а также далеко продвинувшуюся вперед программисткая наука, сформулировавшая явно принципы dependency inversion, применившая на практике dependency injection..., разобравшаяся наконец более менее в том, что такое OOП, а также развивающая новые языки программирования в том числе функциональные и т.д. Все это вместе сделало промышленную разработку совсем другой.

Уже не секрет, как писать код так, чтобы не пришлось его переписывать. Переписывание происходит только при изменении функциональных требований или протоколов со стороны заказчика или при необходимости оптимизации отдельных частей проекта. Все это управляемый и предсказуемый процесс, называемый рефакторингом. При правильном покрытии тестами вероятность внесения в код побочных эффектов существенно снижается.

Наличие "говнокода" в проекте это сегодня не правило, а признак плохого управления проектом. Практика показывает, что средства для получения качественного кода сегодня есть и эти средства вполне по силам к внедрению в большинстве проектов и на моей памяти я видел в том числе и вполне некоммерческий проект, применяющий все средства автоматизации сборок, покрытия тестами, стилями, со вполне вменяемым менеджментом даже... Проект этот назывался http://jtalks.org, разрабатывали они что-то для форумов на базе javа. Я в курсе, просто из-за того несколько моих коллег работающих в одной комнате в этом участовали. Проект кажется закончился удачно, если судить по сайту http://javatalks.ru, на котором результаты применили, как я погляжу. Проект судя по всему продолжается, на сайте можно посмотреть что там применяется http://jtalks.org. Часть средств разработки для проекта была предоставлена бесплатно http://jtalks.org/display/jtalks/Our+Sponsors, после начала проекта соотстветсвующими компаниями разработчиками. Проект был инициирован на форуме javatalks.ru за счет исключительно кармы нескольких модераторов и активных участников.


Последний раз редактировалось achesnokov 12 апр 2013, 11:51, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 12 апр 2013, 10:46 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
:shock: А кто будет писать документацию на саму документацию. :?: Бюрократия!

Как люди ломают защиту без документации и вообще без исх. к. .Это кормушка для тех кто вокруг.

Перечитал еще раз и понял что согласен со всеми. Но как же проще было раньше.


Последний раз редактировалось iz56 12 апр 2013, 11:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 12 апр 2013, 11:09 

Зарегистрирован: 19 май 2011, 14:54
Сообщения: 73
iz56 писал(а):
:shock: А кто будет писать документацию на саму документацию. :?: Бюрократия!
Как люди ломают защиту без документации и вообще без исх. к. .Это кормушка для тех кто вокруг.


Это эмоции и троллинг а не прагматичный подход. Я не утверждал, что нельзя что-то делать неправильно - можно.
Когда люди ломают защиту - они лишь вставляют свои часы работы в чужие сотни или даже тысячи человеко-дней.

Ничто так не вредит проекту как баги. Баги имеют обыкновение появляться в самый не подходящий момент.
Если в процессе разработки, на исправление потенциального бага тратится час. То в процессе баг-фиксинга - день.
При этом страдает какой-то новый проект, поскольку разработчик вместо того, чтобы заниматься новым проектом,
отвлекается на старый. Увеличивая тем самым потенциальные проблемы уже у нового кода.

Я лишь описал, что сегодня реально применяется с перечислением конкретных средств автоматизации и тулкитов.
Все это позволяет делать проекты с zero bug quality - это когда после внедрения не поступает _НИ_ОДНОГО_ бага,
кроме CR (Change Request).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 12 апр 2013, 11:14 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Да, это эмоции. И протест против времени, наверно.
И вопрос что можно применить для ОС разработки - из инструментов и подходов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Miraculix OS
СообщениеДобавлено: 12 апр 2013, 11:23 

Зарегистрирован: 19 май 2011, 14:54
Сообщения: 73
iz56 писал(а):
Да, это эмоции. И протест против времени, наверно.
И вопрос что можно применить для ОС разработки - из инструментов и подходов.


Сам над этим медитирую. Вопрос стоящий отдельной длительной темы обсуждения.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB