Leave a comment

ext_135584 February 12 2009, 11:48:40 UTC
Согласен практически на 100%. Несколько спорно утверждение об обучении именно башу. Но вполне соглашусь об обучение в shell в принципе. :) А то нынешние программы обучения (школьные, институтские и все курсы в принципе) выглядят как: "нажмите на иконку ворда. Теперь мы научимся делать текст толстым. Для этого выделите его и нажмите вот сюда!" Не, ну пипец! ЭТО обучение???!!! Когда людям говорят "а теперь сохраним наш текст в папочке ТЕКСТ", а человек даже не понимает что такое "папочка"! Я знаю, проходил через это, когда в свое время пришлось решать проблемы в офисе. Сотрудники явно не понимали о чем я говорю, хотя работали уже на компе много лет. Когда же я на пальцах объяснил им что есть комп, диск, папки, файлы и прочее, у них просто настало просветление! Для этого понадобилось пара часов! А пройденные до этого многодневные курсы не дали им по сути НИЧЕГО, кроме тупого знания "на какую кнопку нажать". Только вот если эта кнопка оказалась вдруг не там, или кто-то убрал ее с панели, то все, жопа, человек потерялся. :( Грош цена такой грамотности! Так что поддерживаю!... Жаль только, что это все действительно мало волнует людей, которые будут принимать решения, как у вас, так и у нас. :( Увы, по прежнему "бабло побеждает зло", откат решает все. :(

Reply

tengu_crow February 12 2009, 12:13:15 UTC


Quote:Согласен практически на 100%. Несколько спорно утверждение об обучении именно башу. Но вполне соглашусь об обучение в shell в принципе. :)

Агамс. А какую shell по твоему мнению лучше использовать? С этим у меня как раз пробел :)) Тут в меня можно смело взять за пуговицу и напомнить "врачу, исцелися сам" :) Я еще на начальной стадии освоения. То есть из всего перечисленного в программе я слабее всего владею именно шеллом. По объективным причинам :( Работа требует использования MATLAB, поэтому я пока сижу под winXP, правда с прикрученным к ней набором линуксовых утилит перекомпиленных под win32 :))) То есть ls и пр. и пр. моя командная строка понимает и я ими пользуюсь очень часто :))) Посему мысль была простой - раз bash идет почти везде по умолчанию - изучать нужно именно его.

Reply

ext_135584 February 12 2009, 13:05:03 UTC
А mathlab под вайном не идет? Надо глянуть... Ну да речь не о том. :)
По поводу шела: я работал под разными (sh/bash/csh/tsch/zsh/ksh). В принципе их по симантике можно разделить на два класса: sh-подобные и csh-подобные. Разница есть конечно, но по большому счету все юниксы для свое загрузки и инициализации используют все же sh. То есть это я считаю база. Значит ей и нужно учить. А все тонкости, улучшения и навороты каждого шела юзер уже освоит сам. ;) Просто если сделать изначально акцент например на баш, то будет, как я наблюдал пару раз, когда человек привыкший к башу, садился за солярис (ksh) и пытался в написании скриптов использовать башевский расширенный синтаксис. И очень удивлялся увидив многочисленные ошибки а то и "сюрпризы" полученного скрипта. ;)

Reply

tengu_crow February 12 2009, 13:29:16 UTC
Ага. Да. Тогда, разумеется, нужно учить именно sh. База есть база :) А с нее каждый уйдет уже туда, куда ему нужно :)))

Reply

ext_135584 February 12 2009, 13:38:00 UTC
Если бы я разрабатывал программу обучения, то сделал бы примерно так: изучения основ шелла, а после освоения часик на "отличия и особенности различных shell". Ну и как вариант факультативно: "продвинутое программирование в bash/zsh/tcsh" (нужное подчеркнуть) ;)

Reply

tengu_crow February 12 2009, 13:45:23 UTC
Ага где-то так. Скорее всего это получится уложить в программу полностью :)

А кружок должен быть "изучение Vim/Emacs". Причем именно один, иначе в школе начнется напряженность :)))

Reply

xornot February 12 2009, 15:09:57 UTC
Что может быть хуже программирования для шелл? Мне проще на C++ нужную программу написать, чем скрипт.

Reply

tengu_crow February 12 2009, 15:49:23 UTC
Тут немного другие соображения работают. Шелл на начальном уровне проще, чем C++ и системнее - здесь человек идет от работы с файловой системой вручную к работе теми же командами, но объединенными в скрипты.

Ммм. Кстати. А с чего ты начинал? Всегда было интересно узнать больше о начале твоего творческого пути :)

Reply

xornot February 12 2009, 16:33:41 UTC
Именно - на начальном уровне шелл, конечно, проще. А вот ежели открыть какой-нибудь configure-файл от любого исходника, то обнаружится, что этот 300-килобайтный скрипт вручную не пишется, а создается утилитой autoconf на основе относительно вменяемого файла настроек :)

А я в области программирования начинал с книжки по GW BASIC. Еще теоретически знал Pascal. Потом методом тыка освоил диалект BASIC для Спектрума (документации у меня не было). Потом баловался (именно баловался) с Turbo и Borland Pascal, затем с первой версией Delphi и так до Delphi 7. Ассемблер - на начальном уровне. Затем, уже в Linux, изучил Си, сейчас вот уже год как перешел на С++ и считаю его вместе с Си самыми простыми языками программирования. Наверное, это относится к личному удобству. Могу написать программу на Java (вот тюнер для гитары написал), на C#. Писал скрипты на Python и шелл, но к таким языкам у меня душа не лежит, равно как к Lisp, да и к Java тоже.

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

Reply

ext_135584 February 12 2009, 17:09:05 UTC
Хе. :) Я тоже с синклеровского бейсика начинал, потом его же ассемблер. Вот это было классно! :) Сейчас ИМХО таких программеров нет, да простят меня мои знакомые программисты. :( Это ж сейчас плюс минус 10Мег программы - это нормально. А тогда... 48 КИЛОбайт на все, вместе с видеопамятью (16к)! И в это все люди умудрялись всунуть трехмерный движок, кучу галактик с уникальными(!!!) планетами, строями, экономикой и прочим. :) Да, я знаю как это было решено, но ребята, согласитесь это гениально! Сам помню, писал драйвер для самодельного модема. Как экономили каждый байт: если применить вот эту команду - будет 4 файта, а если 2 вот этих, то эфект тот же, но тратим уже 3 байта, 1 байт выиграша. :) Вот это была школа... Ну да ладно, что было - того не вернуть, но вспомнить приятно. :)

А вот то, что надо учить программированию без привязки к языку - полностью согласен! Ибо у программиста мозги должны быть "вправлены", что бы он мог стать настоящим программистом. Но это опять же, удел профессионалов ИМХО.

Reply

xornot February 12 2009, 18:26:47 UTC
Сейчас до сих пор живы и действуют программисты-минималисты :) Речь идет о демо-сцене. Посмотрите на kkrieger (http://www.theprodukkt.com/kkrieger) - игра размером 96 килобайт, которая по графике и звуку подобна 3D-шутерам, занимающим сотни мегабайт!
Еще много внимания экономии ресурсов уделяют разработчики программ для мобилок, на Java ME - там особо не разгуляешься.
Драйвер для самодельного модема - это здорово. У меня никогда не доходили руки до низкоуровневого программирования, хотя это ведь - как прикоснуться к неким основам материи.

Reply

ext_135584 February 13 2009, 13:57:30 UTC
Ну да, современные шедевры минимализма видел конечно. Но есть одно "но"! Тогда это была суровая необходимость, а сейчас больше как "а посмотрите как я могу!" ;) К тому же эти современные программы хоть и являются маленькими, но разворачиваясь в памяти занимают намоооого больше места, чем сам исполняемый файл. :) Так что сравнение не совсем верное... Да и java me нельзя сравнить с тогдашними синклерами: даже у слабенких телефонов нынче памяти порядком больше, чем имел синклер. ;) Да и процессоры пошустрее. :)

Reply

ext_135584 February 12 2009, 16:02:26 UTC
Не хочу обидеть вас, уважаемый, но ваше высказывание смахивает на систематические комменты на лоре. :) Я бы совершенно с вами согласился, если бы вы сказали что-то вроде: "Не всегда хорошо программирование на шелл, для меня например легче написать на C++". И я бы с вами согласился абсолютно! А на это ваше высказывание, я могу лишь спросить: вот к примеру, сколько строк кода вам понадобиться, что бы все логи (в том числе и заархивированные) прочесть, выбрать из них все неудачные попытки логина по ssh, выбрать оттуда все ip, и выдать список с уникальным набором ip? А сколько времени надо на отладку? В зависимости от умения программировать на C++ от 15 минут, до... в общем много. :) На шеле мне нужна лишь одна строка:

cd /var/log/ && (cat auth.log auth.log.? ; gzip -dc auth.log.?.gz) | grep ssh | egrep -i "(invalid|filed)" | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort -n | uniq

Не смотря на кажущуюся сложность на ее написание у меня ушло не более 15 секунд (десятипальцевый способ набора, о чем как раз писал автор данного журнала) причем без отладки. :) Хотите проверить работает ли она? Проверьте. :) Выборка идет по "неверно введенному пароль" и "неверному юзеру".

Reply

xornot February 12 2009, 16:21:12 UTC
Будет ли обычный пользователь писать такую "одну строку на шелле"? Я не спорю, что шелл - мощное средство, но с точки зрения ясности программирования он ужасен.

Reply

ext_135584 February 12 2009, 16:31:36 UTC
Ну может быть не каждый сможет выдать такую строку сходу, но по поводу ясности опять же позвольте с вами не согласиться: шелл скрипт - не что иное, как последовательность команд выполняемых друг за другом, что для начинающего (да и для любого вообще) гораздо понятнее нежли тот же си, с его main, объявлением переменных, структурами и прочим. Я не говорю, что это лучше или хуже, я говорю о том, что это прозрачнее и понятнее начинающему. Ну а управляющие структуры вообще практически такие же как в других языках: if, case, for, while... :)

Reply

tengu_crow February 12 2009, 13:33:41 UTC


Quote:А mathlab под вайном не идет?
Он на моей машинке и без этого тормозит, а под вайном... надо попробовать вообще... У меня (благодаря леди satinenok :) появились лишние 300Г пространства, так что как только дойдут руки - появится ubuntu и я наконец заживу нормальной половой жизнью в нормальной системе :)))

Reply


Leave a comment

Up