LINUX.ORG.RU

User Mode Linux


0

0

Вот пишем в универе курсовую работу по реализации своей фаиловой системы (ftpfs). Все ето тестируем в User Mode Linux (в хтерме справа).

П.С. Доктор, я не жалуюсь - я хвастаюсь :)

>>> Просмотр (1024x768, 142 Kb)

★★

Проверено: Shaman007 ()

> я хвастаюсь

Имеешь право: отличный скрин. Единый стиль, интересная задача, профессионально выглядящий код... Emacs, в конце концов! :)

hbee ★★★★
()
Ответ на: комментарий от anonymous

Вообще-то ето в UML файловая система от слаки (8.1). А работаю я в Генту.

the_coder ★★
() автор топика

Ну и сколько ты расчитываешь получить за 'goto' в C коде?

Кстати, может кто прояснит мне, какой глубокий смысл есть писать:

if (....) {
};

Точка с запятой нафига там?

svyatogor ★★★★★
()
Ответ на: комментарий от svyatogor

Посмотри на код ядра! Там дохрена goto. Дело в том, что это аналог exception-handling в C. А насчет точки с запятой после if так да, просто как-то само собой получилось :)

the_coder ★★
() автор топика
Ответ на: комментарий от the_coder

В ядре еще есть и ассемблер :)) можт еще и за это оценку снижать будут? :)
Код хороший, все ок..

godexsoft
()
Ответ на: комментарий от svyatogor

Бывают случаи, когда применение gotо оправдано. Сомневающимся идти читать исходники ядра.

anonymous
()
Ответ на: комментарий от anonymous

>Бывают случаи, когда применение gotо оправдано.

И очень часто, и тут не в исходниках ядра дело, а в отсутствии необходимости городить кучи if else ....

voiD
()

Ну можно еще для удобства вместо флажков 1,2,0 (которые часто забываются, особенно если код большой) поставить константы с красивыми именами:)

А насчет goto -- так они разнообразят и украшают вашу программу, с ними ее чтение становится гораздо занимательнее;-)

ivon
()
Ответ на: комментарий от ivon

> Ну можно еще для удобства вместо флажков 1,2,0 1,2,0 это не флажки а позиции внутри файла

the_coder ★★
() автор топика
Ответ на: комментарий от svyatogor

а ты попробуй выйди из for'a, а потом из if'a, и с нужным тебе откатом, и посмотри что будет удобнее/понятнее - goto или куча нового кода. Если начитался красочных книжек для детей, где написано, что goto - нини, то я теб сочувствую.

butterfly
()
Ответ на: комментарий от butterfly

Ну, чтобы не прыгать из for'a сделали while, но с ним конечно думать об условии выполнения надо, на то ты и програмёр. На мой взгляд, злоупотреблять goto тоже не стоит. Оно может быть оправдано, если, например, позволяет избежать введения функций для разовых операций и "красивости кода". Может, кто еще примеры знает?

ivon
()
Ответ на: комментарий от ivon

херово написал, -- надо "для разовых операций в целях "красивости кода""

ivon
()
Ответ на: комментарий от ivon

самое оправдонанное использование goto - это выделение и освобождение
ресурсов, а так же выход из вложенных циклов:

res=-1;
if (get_res1()!=0)
goto out;
if (get_res2()!=0)
goto out1;
if (get_res3()!=0)
goto out2;
//some work
res=0;
free_res3();
out2:
free_res2();
out1:
free_res1();
out:
return res;

anonymous
()
Ответ на: комментарий от svyatogor

>>Ну и сколько ты расчитываешь получить за 'goto' в C коде?

святогорчик, не позорься, глянь лучше код ядра :)

anonymous
()
Ответ на: комментарий от sigill

Драйверы -- плохой пример, слишком узкоспециализированный. Там главное -- скорость и эффективность, и код как правило небольшой.

Если бы преподы по информатике видели, как физики-экспериментаторы пишут драйверы для управления своими железяками, они бы рыдали и бились головой об стену. Но тем не менее они работают на экспериментах годами:)

ivon
()
Ответ на: комментарий от sigill

да ядро тут совершенно не причем, это просто самый простой, требующий минимум усилий подход к выделению и освобождению ресурсов.

anonymous
()
Ответ на: комментарий от anonymous

Опять этот бред про goto... 1) Оператор в языке есть. Си отражает Ассемблер, а в нём всё делается через goto и это нормально и удобно. Или даже это будете опровергать? ;-) 2) Есть задачи, на которых goto в самый раз. Иначе делают (у меня на работе делали, лишь бы не юзать злое goto - ибо от него всё зло) извраты наподобии: do { бла-бла if(error)break; бла-бла }while(0); Костылями это явно попахивает. А на самом деле тут в самый раз goto заюзать. 3) Стремление уйти от простых решений в сторону "упрощения структуры" - аля C++ со всеми его извратами - это тупники ПО. Бэйсик - так вообще идеал - там всё абстрактно - любая переменная, насколько я помню :-).

Вывод: не хочется ВАМ юзать - НЕ ЮЗАЙТЕ, пишите хоть на html с джавой и визуал-басиком - "светлого" вам будущего, но не надо хаить, тех, кто пишет оптимизированный код, незаморачиваясь на идеологию. ИМХО goto юзают те, кто любит ассемблер. P.S: Просто накопилось.

Serega_S
()
Ответ на: комментарий от the_coder

>Посмотри на код ядра! Там дохрена goto.
это говорит только о том что линь-ядро есть какашка, а сам Линус дубина, изобретатель велосипедов. Еслиб не комьюнити и сторонний софт - линь бы и года не прожил.

anonymous
()
Ответ на: комментарий от anonymous

Ах, какой мудрый ананизмус! Он наверное каждый день новое ядро лобает, на MS-ACCESS наверное. Там goto точно нет!

the_coder ★★
() автор топика
Ответ на: комментарий от the_coder

> Ах, какой мудрый ананизмус! Он наверное каждый день новое ядро лобает, на MS-ACCESS наверное. Там goto точно нет!

RESPECT!!!!!!!! =))))) Хоть посмеялся =)

LeX
()
Ответ на: комментарий от Kbps

To: Serega_S

А Лучше в Jabber: kbps@jabber.org

p.s. пора кончать с icq(aol), будущее в Jabber'е !

Kbps
()

да мен. всё как надо. =) кто готу хаит - это вы зря. вам тут сказали, что с - отражение асма (там тоже есть проблемы переносимости кода, в С) вот и не надо. кто на асме без jcc i jmp кодит? блин. даже при проектировании, построении блок-схемы алгоритма стрелки являются переходами. еслу тут все такие НЕ_КОДЕРЫ, а ПРОГРАММИСТЫ-теоретики с хорошим знанием различных подходов и т.д. и т.п. пишите выши программы, и не лезьте в систему, которая чем скорее, тем лучше.

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

anonymous
()
Ответ на: комментарий от ivon

>>позволяет избежать введения функций для разовых операций

вот именно. Разовая операция как правило - откат. И вставлять всюду вместо goto 10-15 откатных строчек - тупость, которую не разумеют только авторы учебников типа "С за 10 дней".

butterfly
()
Ответ на: комментарий от anonymous

>это говорит только о том что линь-ядро есть какашка

подобное высказавание говорит только о том что писавший его полный ламо,
и о том как писать ОС он не имеет не малейшего представления.

anonymous
()
Ответ на: комментарий от butterfly

ну, у меня откаты редко бывают -- проги в основном
числодробительные, вылетит, и фиг с ней, главное -- результат.
Когда активно пишешь работу, приходится постоянно в прогу условия добавлять для проверок гипотез,... иногда просто
удобнее по меткам прыгать, чтобы лишние if/switch не плодить.
На момент написания статьи по результатам работы программа только что минет не делает:)

ivon
()
Ответ на: комментарий от butterfly

По поводу количества goto в ядре )

$find /usr/src/linux/ -type f -name "*.c" -exec grep -H goto {} \;|wc -l 29878

ну и что теперь всем дружно проклять Линуса ?

dreamer ★★★★★
()

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

cow_killer
()
Ответ на: комментарий от anonymous

>святогорчик, не позорься, глянь лучше код ядра :)

Он позорился бы , если бы у нас преподы были нормальные, а так он все правильно говорит. Я сам на этом год назад прокололся - 4 , гад , поставил.

cow_killer
()

Мне просто интересно, что собственно автор хотел сказать "User Mode Linux"? Это режим работы процессора, типа обратное "Kernel Mode"?

anonymous
()
Ответ на: комментарий от cow_killer

С преподами надо уметь спорить, особенно если
претендуешь на высокую оценку.
Я как-то сдавал информатику, при решении тестовой задчки
меня переклинило, вместо while() поставил for и в теле
цикла был if() с goto. Препод естественно сразу это обнаружил,
и по дури сказал, что так нельзя и это работать не будет,
это некорректно но отношению в ЭВМ,... :)
Тут уже меня прорвало -- какая еще корректность?!
Пойдемте проверим -- если не заработает, будут любые ошибки,
ставьте 2, человек сразу пошел на попятный;)
Правда, общался я, конечно, вежливо, с упором на то, что меня
переклинило:)

ivon
()
Ответ на: комментарий от ivon

Да там совсем суровый мужик был - профессор, типа. Пролистывает книжки, и морщится , будто бы он лучше все написал. К тому же декан. Карова, одним словом.

cow_killer
()
Ответ на: комментарий от cow_killer

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

ivon
()

the_coder, поделись конфигом CTWM на sknazev@gmail.com

TIA.

SK
()

А мне как-то не очень скриншот понравился...

php-coder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.