LINUX.ORG.RU

Как лучше организовать процесс изучения компьютерных технологий?


1

1

Раньше, когда я был на Windows, то был твердо уверен, что моих знаний более чем достаточно. Но после того, как я перешел на Linux, то понял всю свою наивность. Плюс к этому, у меня есть желание стать специалистом по безопасности Linux(ну или просто Linux-программистом, на худой конец).

Короче, мой уровень знаний надо повышать. Однако, у меня возникли вопросы насчет того, как организовать процесс самообучения. Не секрет, что большинство областей знаний пересекается друг с другом. Так например, если я буду изучать ассемблер, то мне просто необходимо знать как работает процессор. Если я буду в подробностях изучать строение Unix/Linux, то мне может понадобиться знание языка программирования Си. А если я буду изучать программирование, то мне могут понадобится некоторые знания из области математики(а с этим у меня проблемы, кстати). Если я буду изучать работу компьтерного железа(например, чтобы заняться оверклокингом), то мне могут понадобиться знания из области физики(с которой у меня тоже дела обстоят неважно).

Короче, одно с другим связанно с другим. Это мне напоминает зависимости в системе пакетов. Просто голова идет кругом, если хорошенько так обо всем подумать. Даже не знаешь, что делать. Встает вопрос: как разрешить такие «зависимости»?


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

Чтобы написать на нём hello world нужно всего 2 строчки

Да там память течёт! Вот исправленный вариант (убрал утечки и починил код выхода):

main(t,O){int _=main,m;return(O),O==_?((int(*)())O)(_,t+1),17*4:t==_?(*(char*)O?*(char*)O^=
((int(*)())t)(O,t):17),O:(printf(((int(*)())_)(_,m=strdup(",!((+hd3+6( eN"))),free(m),t-1);}
i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

Писать хеллоуолды и быть программистом - это две большие разницы. А 1Сники вообще конфигураторы, а не прграммисты.

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

echo -e «тест|\xD1вредоносный код» | sed 's/|.*//'

А, некорректный UTF8... Понятно, благодарю.

Интересно, что послужило причиной такого решения... В документации в качестве оправдания упоминается некий таинственный POSIX 1003.2, который, к сожалению, найти не удалось.

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

Интересно, что послужило причиной такого решения...

очевидно потому, что по стандарту точка совпадает с любым символом. Откуда следует, что с несимволом точка НЕ совпадает. Разве это не логично? Ну и кроме того, некорректный символ вообще говоря и прочитать невозможно, ибо непонятно, как узнать его размер. Как ты проверять-то будешь? Нужно как-то расширять стандарт UTF-8, что-бы ВСЕ комбинации были-бы допустимыми СИМВОЛАМИ.

В документации в качестве оправдания упоминается некий таинственный POSIX 1003.2, который, к сожалению, найти не удалось.

дык во всех стандартах написано, что точка совпадает с любым СИМВОЛОМ.

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

Дай угадаю. Тут всё просто, но тебе лень расписывать каждую буковку. Ты лучше ещё раз перечитаешь томик Кнута. Дважды.

i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

очевидно потому, что по стандарту точка совпадает с любым символом. Откуда следует, что с несимволом точка НЕ совпадает.

Вот бы ещё найти этот мифический стандарт...

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

Тут-то как раз проблемы нет. Граница символа в UTF8 читается довольно однозначно, даже для некорректно заданного символа. Вопрос исключительно в договорённости не матчить точку с некорректно заданным символом, то есть вопрос к стандарту, в доках к sed-у тоже его в качестве оправдания используют.

дык во всех стандартах написано, что точка совпадает с любым СИМВОЛОМ.

Как по мне, битый символ — тоже символ. :)

anonymous
()

Раньше, когда я был на Windows, то был твердо уверен, что моих знаний более чем достаточно. Но после того, как я перешел на Linux, то понял всю свою наивность. Плюс к этому, у меня есть желание стать специалистом по безопасности Linux(ну или просто Linux-программистом, на худой конец).

Так всегда будет. Игрался кубиками в детском садике дяди билли, а теперь оп - реальный мир. Какая нахрен разница кто ты? Зачем пытаться быть каким-то абстрактным «программистом»?

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

А легко. Зачем что-то организовывать? Суть обучения - создание лучшего. Главное на увязнуть в пучине деревенского интерпрайза и не стать макакой, которая составляет из кубиков однообразное говно на конвейре - таким макаром ты не особо и разовьёшься.

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

Да всё так или иначе пересекается со всем.

Так например, если я буду изучать ассемблер, то мне просто необходимо знать как работает процессор.

Не необходимо, а желательно, если ты хочешь запилить что-то лучше какахи.

Если я буду в подробностях изучать строение Unix/Linux, то мне может понадобиться знание языка программирования Си.

Если ты взялся за программирование - тебе необходим Си. Всякую конвейерную братию, которая стала модна в последние время в связи с появлянием ширпотребных направлиний, аля: говновеб, деревенский интерпрайз, формачки и бомжеБД. Появился большой спрос - разсплодились целые поколения говнорей.

Говнарь не может осилить что-то сложнее кубиков - появились ЯП для говнорей(жаба и иже с ней). Появилась проблема «безопасноти», «утечек» и т.п. Скриптовые языки, суть которых была - быстрое решение какой-то задачи(автоматизировать расчёт, сделать протенькое действие) и которыен е претендовали на написание и особенно чтение программ больше 5-10строчек(по 100-200символов) - превратились в основу веба, говногеймдева, да и вообще во всё, что пичально.

Если надо запилить что-то быстрее/проще/удобней/красивей/надёжней, то тут без сишечки никуда.

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

Да какая математика. 95% - это макаки, собирающие поделки из кубиков. Какая математика? Математика нужна когда ты что-то создаёшь, улучшаешь, думаешь. Да и то не особо. Абстрактная математика не учитывает ничего из реального мира и поэтому почти всегда она сливается. А реальная учится помере продвижения и является частью понимания работы основных узлов, а понимание этих узлов - основная защита твоего мозга от желания наговнокодить.

Если я буду изучать работу компьтерного железа(например, чтобы заняться оверклокингом), то мне могут понадобиться знания из области физики(с которой у меня тоже дела обстоят неважно).

Какой оверклокинг и физика? Тут ты высоко взял.

Короче, одно с другим связанно с другим. Это мне напоминает зависимости в системе пакетов. Просто голова идет кругом, если хорошенько так обо всем подумать. Даже не знаешь, что делать. Встает вопрос: как разрешить такие «зависимости»?

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

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

P.S. Я считаю, что для ширпотреба и среди ширпотреба не выростет норм программист, поэтому бежать за этими новомодными «тенденциями» - себе дороже.

o2n3e
()
Ответ на: комментарий от i-rinat

Дай угадаю. Тут всё просто, но тебе лень расписывать каждую буковку.

не угадал. Фишка в том, что нечитаемый быдлокод можно писать на ЛЮБОМ ЯП. Ну вот тут нечитаемый быдлокод на C. Что дальше? ЯП X круче C, потому, чтол там такой быдлокод писать нельзя? Подумаешь проблема - можно другой. Тебе нагуглить быдлокод для языка X?

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

очевидно потому, что по стандарту точка совпадает с любым символом. Откуда следует, что с несимволом точка НЕ совпадает.

Вот бы ещё найти этот мифический стандарт...

в POSIX.2, section 2.8 нету? у меня под рукой этого стандарта нет сейчас.

Тут-то как раз проблемы нет. Граница символа в UTF8 читается довольно однозначно, даже для некорректно заданного символа.

лично мне неясно, сколько байт надо прочитать после 0xD1 0xD1? Учитывая, что IRL (как и в моём примере) второе 0xD1 это на самом деле первый байт ВТОРОГО символа. Т.е. в этом случае необходимо вернуть байт в поток, и читать его по новой. Считать МИНУС ОДИН байт. Достаточно того, что не каждый поток это допускает...

Как по мне, битый символ — тоже символ. :)

по мне - тоже. Вот только их обработка слишком сильно усложняет и замедляет код. Потому-то их и не обрабатывают. GIGO

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

Ну вот тут нечитаемый быдлокод на C.

это не быдлокод, а упражнение. Первое — понять как работает, второе — починить.

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

это не быдлокод, а упражнение. Первое — понять как работает, второе — починить.

вот тебе ещё Over9000 «упражнений»: http://govnokod.ru/

а Кнута да, не читай - там сложно слишком, и матана много.

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

вот тебе ещё Over9000 «упражнений»: http://govnokod.ru/

Вот тебе цитата с того сайта:

http://govnokod.ru/12108#comment160329

Достали уже постить всякие произведения соревнующихся обфускаторов! Ясен пень, автор кода полностью отдавал себе отчёт, что пишет путаницу, иначе не делал бы typedef char C; и прочие. Одно дело постить говнорешения криворуких программистов - другое, постить такое вот творчество, которого на соотв. тематических сайтах навалом.

а Кнута да, не читай

okay.

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

Вот тебе цитата с того сайта:

Достали уже постить всякие произведения соревнующихся обфускаторов!

дык зачем ты постишь здесь этот говнокод? доказать, что ты крутой, и сумел его распарсить? Ну а ты подумай:

1. часть ЛОРа просто не поймёт. И не оценит твою крутизну.

2. другая часть просто не полезет ковырять это говно, им своего хватает.

Конечно возможно тут есть ещё один такой-же задрот как ты... Но это вряд-ли...

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

дык зачем ты постишь здесь этот говнокод? доказать, что ты крутой, и сумел его распарсить?

Да. Разве это не очевидно? По той же самой причине и ты сюда пишешь. Показать свою важность и снискать уважения.

1. часть ЛОРа просто не поймёт. И не оценит твою крутизну.

Плохо. Зачем мне тогда показывать свою крутизну, если никто этого не видит?

2. другая часть просто не полезет ковырять это говно, им своего хватает.

Ух-ты. А ты в какой категории?

Конечно возможно тут есть ещё один такой-же задрот как ты...

Оу, мы уже перешли к оскорблениям.

Кстати, давай посмотрим на твой код. Думаю, многим будет интересно взглянуть на код, который выходит из под пера ярого приверженца книг Кнута. Наверное, он идеален.

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

Да. Разве это не очевидно? По той же самой причине и ты сюда пишешь. Показать свою важность и снискать уважения.

ты неправильно понял. у меня другая мотивация.

2. другая часть просто не полезет ковырять это говно, им своего хватает.

Ух-ты. А ты в какой категории?

именно в этой.

Кстати, давай посмотрим на твой код.

посмотри. Вот тебе самый убогий ЯП, который мне известен: sed. Хуже и быть не может. Тем не менее, на нём тоже можно писать более-менее понятно, а не как ты.

Оу, мы уже перешли к оскорблениям.

разве это оскорбление?

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

ты неправильно понял. у меня другая мотивация.

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

посмотри.

По ссылке вижу набор скриптов на 10 строчек максимум. Давай нормальные программы.

разве это оскорбление?

Да.

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

По ссылке вижу набор скриптов на 10 строчек максимум. Давай нормальные программы.

там дальше посложнее есть. Только я сомневаюсь, что ты и 10и строчные распарсил.

Да.

ну извини.

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

там дальше посложнее есть. Только я сомневаюсь, что ты и 10и строчные распарсил.

Где? Посложнее? И что они делают?

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

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

Где? Посложнее? И что они делают?

ссылка выше.

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

facepalm

иди лучше подучи домашнее задание...

Если захочешь вернуться, то осознай, что данный пример был приведён для того, что-бы ты увидел, что даже на кривом языке можно писать более-менее читаемые программы. И что писать нечитаемые программы на нормальном ЯП - не от большого ума. Да и гордится тут собственно нечем. А что до таблицы умножения - осиль ссылку, я там сам писал, что sed считать не умеет. Потому делать на ней умножение может только идиот или задрот.

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

facepalm

Что-то ты кроме фейспалмов (смотри лицо не разбей) и отсылок к учителям, урокам и книгам Кнута и сказать больше ничего не можешь. Наяриваешь крошечные примерчики, которые кроме как в учебных целях ни для чего не годятся. Сказал бы уж прямо, мол, не смогу. Ну напиши на C. Там строчек 20 всего и полчаса-час времени; всяко меньше, что то, сколько ты потратил тут на флуд.

я там сам писал, что sed считать не умеет

sed же Тьюринг-полный?

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

Ты мне его выкатил на просьбу показать твой код. Что-то я там ничего серьёзного не увидел. Уж не преподаватель ли ты? :)

i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

Ну вот тут нечитаемый быдлокод на C.

Нее. Тут — чуть ли не шедевр, если не считать имён переменных. Это не говно из области «кодер идиот, и ничего лучше придумать не смог», и не тупая автоматическая обфускация рабочего куска кода. Это целенаправленная и почти оптимальная реализация на Си необычного, но вполне определённого подхода (ну, i-rinat добавил туда несколько лишних операций).

Разобрать (а тем более починить) такой, казалось бы короткий, но совсем не очевидный кусок кода — это вызов для настоящего программиста. Такими программистами и создан Linux.

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

Разобрать (а тем более починить) такой, казалось бы короткий, но совсем не очевидный кусок кода — это вызов для настоящего программиста. Такими программистами и создан Linux.

как пафосно!

drBatty ★★
()
Ответ на: комментарий от i-rinat

Наяриваешь крошечные примерчики, которые кроме как в учебных целях ни для чего не годятся.

дык это ссылка вовсе не на проект какой-то...

Ну напиши на C. Там строчек 20 всего и полчаса-час времени; всяко меньше, что то, сколько ты потратил тут на флуд.

не нужно. будет нужно - нагуглю либу какую-нить.

я там сам писал, что sed считать не умеет

sed же Тьюринг-полный?

и что?

Ты мне его выкатил на просьбу показать твой код. Что-то я там ничего серьёзного не увидел. Уж не преподаватель ли ты?

надо было в нечитаемый однострок закатать, что-бы было никому непонятно, в т.ч. и автору говнокода? Дурное дело не хитрое.

drBatty ★★
()
Ответ на: комментарий от i-rinat

Хм... Нормальные, это какие? Вроде Sedtris (tetris на sed)?

Да.

там кстати нет ничего сложного. Только букв много. В моих примерчиках есть штучки и посложнее.

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

дык это ссылка вовсе не на проект какой-то...

Именно так. А просили на код.

не нужно. будет нужно - нагуглю либу какую-нить.

Ты фееричен. Если ты не в состоянии осилить умножение операций, как ты либой-то воспользуешься?

и что?

Ты точно понимаешь значение термина?

i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

там кстати нет ничего сложного. Только букв много. В моих примерчиках есть штучки и посложнее.

Don't forget to be awesome. Пример по ссылке вызвал довольно много «wow» и «ух-ты», потому что это действительно круто. Автор не заморачивалась усложнением, там дело не в этом. Сам факт: «тетрис, написанный на sed» делает этот код крутым.

А ты продолжай зацикливаться на «примерчиках» и «штуках посложнее». Конкретной ссылки я не дождусь, похоже. Конечно, ведь тогда разговор станет предметным.

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

Именно так. А просили на код.

вот тебе и ссылка на код.

Ты фееричен. Если ты не в состоянии осилить умножение операций, как ты либой-то воспользуешься?

ну не на sed же (:

Ты точно понимаешь значение термина?

да. А ты? Попробуй реализовать на sed хотя-бы сложение (простой пример инкремента есть по ссылке, кста), и не будешь говорить ерунды.

Конкретной ссылки я не дождусь, похоже.

ага.

Конечно, ведь тогда разговор станет предметным.

нет. тогда ты сменишь тему. Впрочем, ты её уже сменил. Вот и продолжай обсуждать код drBatty, но уже без меня.

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

ну не на sed же (:

Во-первых, про sed заговорил ты. Во-вторых, напиши на каком-нибудь другом.

Попробуй реализовать на sed хотя-бы сложение (простой пример инкремента есть по ссылке, кста), и не будешь говорить ерунды.

Твой любимый язык, сам на нём и пиши. Вон, сколько букв настрочил уже.

нет. тогда ты сменишь тему. Впрочем, ты её уже сменил.

О, да. Сначала я просил показать код, а теперь я прошу показать код. Я такой непостоянный.

Вот и продолжай обсуждать код drBatty, но уже без меня.

Было бы что обсуждать. Скорее я обсуждаю отсутствие кода drBatty.

i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

простой пример инкремента есть по ссылке, кста

Ох, нашёл я твой инкремент. Больше не мучайся. Вот, держи:

awk '{split($0,a,"");for(q in a)f[a[q]]+=1;}END{for(q in f)print "\"" q "\": " f[q];}'

Ещё скажи, что это сложнее, и вообще нечитаемо, ага :)

i-rinat ★★★★★
()

Я начинал с DOS, а потом переходил на Windows. Поэтому проблем с Linux у меня не было. Я знаю как работают различные функции компьютера, а не заучил порядок нажатия на кнопки в панели управления, чтобы решить задачу.

С чего начинать? Мне хватило статей в журнале Linux Format. Узнал особенности файловой системы (например, в Windows нельзя создать файл с символом \, а здесь - можно, и в Windows есть «Только чтение», «Архивный», «Скрытый» и «Системный», а здесь кое-что ещё), узнал открытые эквиваленты различных программ (мой первый Linux был на 5 CD, Mandriva и openSUSE. Теперь они на 1 DVD), узнал новые команды консоли (по сравнению с DOS), изучил KDE3 (KDE4 тогда ещё не было). И всё, мне здесь хорошо.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)

Компилирование из исходного кода я попробовал ещё до установки Linux. Пришлось скомпилировать драйвер моего RAID. Я узнал что это производится командой make от пользователя, а потом make install от администратора. И что это только для драйверов - для приложений есть ещё ./configure, с ним гораздо сложнее. И что драйверы называются модулями (ядра), потому что драйвер может быть отдельным файлом с расширением .ko, а может быть вкомпилирован в ядро Linux. Оно с открытым исходным кодом и поэтому такой трюк возможен.

Знаний на один абзац, но хорошей литературы, которая описывает всё это в одном месте, я не встречал.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Вон, сколько букв настрочил уже.

Сначала я просил показать код, а теперь я прошу показать код. Я такой непостоянный.

эти два высказывания точно по мою душу?

drBatty ★★
()
Ответ на: комментарий от i-rinat

Ох, нашёл я твой инкремент. Больше не мучайся. Вот, держи: Ещё скажи, что это сложнее, и вообще нечитаемо, ага :)

это другой ЯП. вот тебе на C

x++;
ещё проще. Давай-ка на sed пиши, раз мой вариант не нравится.

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

Разобрать (а тем более починить) такой, казалось бы короткий, но совсем не очевидный кусок кода — это вызов для настоящего программиста. Такими программистами и создан Linux.

как пафосно!

Да, есть немного. Но ведь правда же. :)

ну если s/программист/задрот/g то правда.

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

Давай-ка на sed пиши, раз мой вариант не нравится.

Напишу тогда, когда ты напишешь РСУБД на sed. А пока я выбираю инструмент подходящий к задаче. И при подсчёте частот букв awk справляется гораздо лучше C или sed. Меня не беспокоит тот факт, что ты его не понимаешь. :)

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

И при подсчёте частот букв awk справляется гораздо лучше C или sed.

с тем, что sed не умеет считать(в т.ч. и буквы) кто-то спорил?

Меня не беспокоит тот факт, что ты его не понимаешь. :)

кто тебе это сказал? ты решил, что если в учебнике про sed рассказано, как считать буквы, то их и надо считать этой sed? Разупорись - там русским языком написано, что считать с помощью sed не нужно, и специально дан пример, что-бы было понятно, какая НЁХ получится, если всё-же посчитать. А про awk там речи в общем-то и нет. Если хочешь - напиши мануал про awk, насколько я знаю, русский мануал по этой утилите очень древний и не слишком подробный.

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

то их и надо считать этой sed?

Давай-ка на sed пиши

Сам себе противоречишь.

кто тебе это сказал?

Ты, косвенно. Сказав «вот тебе на C [code]x++;[/code] ещё проще». В этом случае на C не проще. Проще на awk.

Если хочешь - напиши мануал про awk

У awk и так неплохой мануал.

русский мануал по этой утилите очень древний

Технический английский гораздо проще литературного; нет причин его не знать.

i-rinat ★★★★★
()
Ответ на: комментарий от drBatty

Да, есть немного. Но ведь правда же. :)

ну если s/программист/задрот/g то правда.

Не, не задрот. Я даже не знаю, кого в программировании можно назвать задротом. Того, кто постоянно переписывает какой-нибудь софт без видимой на то причины, что-ли? Велосипедостроитель?

Программист — это ведь не только «кодер», который делает только то, за что ему платят, не особо разбираясь в задаче, просто пытаясь сделать её как можно быстрее.

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

Таких раньше называли хакерами. И именно такими программистами написан Linux.

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

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

понимаешь в чём фишка?.. Код типа ((int(*)())t)(O,t):17),O:(printf(((int(*)())_)(_,m=strdup(",!((+hd3+6( eN"))),free(m),t-1);}не научит тебя ничему новому. Ну разве что потренируешься работе в своём текстовом редакторе. Даже если тут есть что-то для тебя новое и полезное, то перед тем, как это понять и осознать, необходимо очистить код от говна, и сделать его чистым и прозрачным. Что-бы это новое было видно, и понятно. Сегодня проще будет нагуглить соотв. пример причём даже с комментариями, чем извлекать жемчуг из этого говна.

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

а где тут проблема? разве ты не знаешь, что в C коде можно писать не только без отступов, но и без пробелов и переводов строки, одним потоком нечитаемого говнокода. Разве вставить пробелы, переводы и отступы для тебя является проблемой? Для меня - нет.

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

понимаешь в чём фишка?.. Код типа [...] не научит тебя ничему новому.

Да ладно! Этот код показывает кучу интересных мелочей, начиная с указателей на функции, приведений и неявных указаний типов и заканчивая самим использованным алгоритмом.

Даже если тут есть что-то для тебя новое и полезное, то перед тем, как это понять и осознать, необходимо очистить код от говна

А его там и нет. Кода всего две строки.

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

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

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

а где тут проблема? разве ты не знаешь, что в C коде можно писать не только без отступов, но и без пробелов и переводов строки, одним потоком нечитаемого говнокода.

Причём тут пробелы? Пробелы ставятся за секунду запуском indent/astyle или хоткеем в любимом IDE, а в этих двух строках их можно расставить даже руками. Этот код интересен не тем, что в нём нет пробелов, а тем что совершенно не очевидно, как он вообще работает.

Первое, что бросается в глаза — код выводит «hello world», но этой строки в коде нет. Вот уже необычная задача.

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

Да ладно! Этот код показывает кучу интересных мелочей, начиная с указателей на функции, приведений и неявных указаний типов и заканчивая самим использованным алгоритмом.

ну я рад, что ты смог там найти для себя что-то новое...

А его там и нет. Кода всего две строки.

ну я и говорю - фекалии. в них тоже всё утрамбовано, и нет ничего «лишнего». Был большой тортик, стала маленькая какашка.

Индусы-говнокодеры так и делают: гуглокопипаст.

я очень сильно сомневаюсь, что тебе поможет копипаст указателя на функцию...

Только есть проблема — для этого надо знать, что искать. Так можно найти решения стандартных задач. Но необычные подходы нагуглить невозможно, потому что ты не знаешь, что гуглить.

это касается алгоритмов, но не синтаксиса и не языка программирования. Если ты знаешь алгоритм, то нагуглить нужное синтаксически правильное решение не составит труда. Вот например: https://www.google.ru/search?q=c указатель на функцию Согласись, это проще, чем выковыривать указатель из твоей какашки? А если алгоритм тебе не понятен, то писать код нет смысла - тебе никакой ЯП не поможет, и уж тем более C.

Причём тут пробелы? Пробелы ставятся за секунду запуском indent/astyle или хоткеем в любимом IDE, а в этих двух строках их можно расставить даже руками. Этот код интересен не тем, что в нём нет пробелов, а тем что совершенно не очевидно, как он вообще работает.

не очевидно лишь из-за отсутствия форматирования и кривых имён переменных.

Первое, что бросается в глаза — код выводит «hello world», но этой строки в коде нет. Вот уже необычная задача.

это уже притча во языцех. Вот, читай, раз такой молодой и не застал: программа из одной строчки ни Perl

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

ну я рад, что ты смог там найти для себя что-то новое...

Ты — не смог? Или просто не понял, как она работает?

ну я и говорю - фекалии. в них тоже всё утрамбовано, и нет ничего «лишнего».

Где фекалии? Из того, что тебе код не понятен, ещё не значит, что это — «фекалии».

это касается алгоритмов, но не синтаксиса и не языка программирования.

В этом куске кода из двух строчек минимум два разных алгоритмических подхода. И что?

не очевидно лишь из-за отсутствия форматирования и кривых имён переменных.

Форматирование исправляется за секунду. Переменных тут аж четыре. Запомнить не трудно. А каким должно было быть форматирование этого кода и имена переменных, чтобы его алгоритм стал очевиден?

это уже притча во языцех. Вот, читай, раз такой молодой и не застал: программа из одной строчки ни Perl

Программа по ссылке печатает Hello World? Нет? Тогда к чему ссылка? Она сложнее, и была намеренно обфусцирована, в отличие от нашего примера.

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