OSDev

для всех
Текущее время: 15 дек 2017, 11:11

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




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

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Так код сам по себе уже документация. Просто я пользуюсь наработками. Мне интересны ньюансы в разбиванием на классы в ООП, групировка функций, стиль написания, подход ориентированный на скокрость или на компакнтность, либо на лаконичность исходников.
У каждого исходника есть то, чего нет у других. У одного обход аппаратного бага, у другого свой порядок перехода в защищенный режим, у третьего пару трюков оптимизации. Кто-то любит делать парочку примитивных и базовых функций, с помощью которых можно написать что угодно. A la машина Тьюринга. А кто-то пладит целый зоопарк интерфейсов, при этом уменьшает рутину, но увиличивает нагрузку на проект и на юзучаемость.
Мной ищется компромисс между скоростью и памятью. Интересно как оно у других.

Некоторые проекты имеют одни недостатки и одни большой плюс - их очень легко изучать как полностью, так и по кусочкам, когда надо посмотреть пример работы с флоппи или с Ethernet адаптером. Изучать с нуля, либо смотреть полотна исходного кода полноценных драйверов, где нагромождения всего и вся. А увидеть работу с того 10% функционала хочется уже сейчас.


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

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1315
Откуда: Зеленоград
JSON писал(а):
Так код сам по себе уже документация


Распространённое заблуждение. Код показывает, что делается, но совершенно ничего не говорит о том, зачем это делается, как именно делается (это можно понять, лишь продравшись через весь код), почему делается именно так, а не иначе...


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
JSON писал(а):
Так код сам по себе уже документация.

Код:
#include <unistd.h>

main(v,c)char**c;<%for(c++<:v]="hello, world!\n)";(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c:>+!!c,!c));**c=!c)write(!!*c,*c,!!**c);return 0;%>

_________________
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
СообщениеДобавлено: 08 апр 2013, 13:12 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Код:
$ cat > test.c
#include <unistd.h>

main(v,c)char**c;<%for(c++<:v]="hello, world!\n)";(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c:>+!!c,!c));**c=!c)write(!!*c,*c,!!**c);return 0;%>
$ gcc test.c
test.c: In function ‘main’:
test.c:3:1: warning: missing sentinel in function call [-Wformat]
$ ./a.out
hSegmentation fault

_________________
Found a CPU. LAPIC ID: 00


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Бывает :D.
За что купил, за то продал. Вот здесь куча других примеров.

_________________
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
СообщениеДобавлено: 08 апр 2013, 19:52 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Да, OCCC - классная вещь.
Просто отметил закон бутерброда: первая попавшаяся не работает. :D

_________________
Found a CPU. LAPIC ID: 00


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

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Yoda писал(а):
JSON писал(а):
Так код сам по себе уже документация.

Код:
#include <unistd.h>

main(v,c)char**c;<%for(c++<:v]="hello, world!\n)";(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c:>+!!c,!c));**c=!c)write(!!*c,*c,!!**c);return 0;%>


>astyle.exe main.cpp

regexp:
(<%) => \{
(%>) => \}
и т.д.

пропустить через компилятор MSVC
cl.exe /E main.cpp - через препроцессор

написать препроцессор самому, чтобы include не трогал и пр. полезные вещи, а остальное разворачивал, и также исключения вроде windows.h.

Пропустив через все это, получаем на выхлопе понятную программу.
Также анализатор может исправить объявление аргументов в старом стиле Си на новый C++98.

Аргументы слабые. Такие вещи можно сделать через единожды написанный скрипт, который бегает по исходникам.


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

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

_________________
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
Сообщения: 1025
Откуда: Балаково
Yoda писал(а):
Такова практика.

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


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
ОК, ты говоришь об отношении к проекту. Давай рассмотрим эту сторону.
В большинстве крупных коммерческих проектов работа программиста - по определению халтура почти для всей команды, за исключением ситуации, когда собралась небольшая группа единомышленников. В истории я могу привести только очень небольшое количество примеров второго типа - на ум мне приходят только разработчики 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. >>>


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

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


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

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


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

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