fly4life
написал 22 марта 2005 года в 15:03 (810 просмотров)
Ведет себя
как мужчина; открыл 182 темы в форуме, оставил 5340 комментариев на сайте.
Вобщем, чего-то меня подбил разговор с redbeard’ом на, так сказать, мааленький опрос мнений сдешних форумлян.
Внимание, вопрос: обязан ли программист (пусть это будет юникс программист) знать командную строку (он же шелл)?
<font size=«-2»>(насчёт того, что это за юникс и какую именно «командную строку» должен знать программист — не уточню. Кто как понял, тот на то и отвечает ;))</font>
Сам я пока водержусь от коментариев, чего попрошу и от redbeard’а (если только чего-нибудь поправить по существу заданного вопроса).
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Слюшай , нэ нада склонять мой псевдоним, да ? ;-)
А по существу — как показало вскрытие, тот товарисч не был программером, это была comp.unix :-)
Так что, сорри. Но сабж актуальный.
Ну, скажем так. Поскольку я обучаю, в некотором смысле, будущих программистов, я считаю, что для общего профессионального развития юниксовый программист шелловое программирование знать должен.
А в чем проблема?
Good Luck,
UT
Да ничего страшного. Соберу мнения местных обитателей — расскажу =). redbeard дополнит ;). Однако, настраиваться на то, что этот рассказ будет чем-то грандиозным, не стоит ;). Просто очередной спор, и очень хочется узнать мнение общественности.
Будет-будет. ;-) Я никогда в Зеленограде не был. ;-) Kate у тебя , надеюсь, есть ? ;-))
По идее не обязан, но ему придется так как нет другого выхода.
Ответ: нет, не обязан.
у него не получится не знать.
программирование в unix — это не столько знание одного языка и знание API системы, это ещё и выбор оптимального решения по нескольким критериям.
и немаловажным здесь является процесс установки пакета и взаимодействия его с остальными программами системы.
в общем, не знать — не получится.
unix в широком распространении пока что плохо мыслим без знания консоли….
Вобщем, Серёг, обязан знать или нет? ;). А-то получается как-то: «не служить — не получится», но вот обязан ли я служить или нет — не известно ;).
«обязан» — по отношению к кому-то/чему-то.
обязан он знать шелл потому что ты тут спрашиваешь? нет.
обязан ли знать, если это требуется в работе? да.
ну вобще-то я не видел хороших UNIX программистов, которые не дружат с консолью.
Я тоже ;). Но вопрос не в этом. Вопрос: обязан ли он знать консоль или нет? По-твоему всё-таки как?
Ответ, честно говоря, действительно может быть неоднозначен. С одной стороны — «Не знаешь консоль — не знаешь Unix», с другой стороны — «Не обязательно знать Unix для того, чтобы написать к.л. программу стандартными средствами C/C++ без привязанности к определённой ОС»
В принципе, одно из другого вытекает. Незнание одного снижает возможности другого. И вообще, если т.н. «программист» является программистом /-unix/, то для него не составит труда черкануть пару строк в шелле.
Скорее обязан, чем нет.
ИМХО обязан.
Иначе он не сможет юзать дебаггеры, тестировать ./condigure скрипты и makefile-ы.
Да и вобще, прграммирование подразумевает уровень общения с системой «на ты». А в UNIX без свободного владения консолью это недостижимо.
Так Unix или как?
Программирование на языке командной строки или как?
Если программирование, то насколько сложное?
Мой ответ — как минимум базовые навыки работы с командной строкой и написания скриптов необходимы.
Вот точно. Использовать Bash/CSh/etc он должен уметь. Потому что иначе работать не сможет. Но что-то сложнее чем cat bla-bla | grep some уже не надо.
Писать можно и без ./configure скриптов и Makefile, я их например не знаю совсем.
Когда-то, в некотором отдалённом прошлом, меня спрашивали, на скольких языках программирования я, при необходимости, могу что-то написать.
ответ точный я раньше знал.
теперь — не знаю.
поглядел, что и как, примеры, маны, и.. и вперёд.
это учитывая, что программистом как таковым себя не считаю. ;)
по сути вопроса: имеются две сильных неясности — «обязан знать» и «программирование в shell».
если по поводу первого, как такового, по сути, уже более-менее высказался, то второе ещё не определено.
возьмём использование automake/autoconf и их скрипт configure.
насколько я помню, это — shell скрипт, весьма сложный.
но необходимо ли знать использующему его в своей программе shell на таком уровне, чтобы мочь:
есть ли однозначный ответ?
неясность и неоднозначность формулировки вопроса возможности единственного ответа не дают.
Серёг, я ж там в постановке вопроса даже где-то приписочку сделал: »…не уточню. Кто как понял, тот на то и отвечает» ;)
На любой вопрос даю любой ответ ? (c)
Вопрос не «любой», а вполне конкретный. Вот понять его может каждый по-разному. Так шта… не надо ;).
Конкретный — это «каждый понимает по-своему» ? Саша, где логика ?
Артём, а какую ты цель преследуешь, задавая подобные вопросы? Ты б не логику искал, а соображать пытался. Или это попытка в чём-то меня уязвить?
Кароче. Любой, подчеркну абсолютно любой, вопрос каждый человек понимает сугубо по-своему. Вот, например, ты думаешь, что абсолютно простой и дожути конкретный вопрос: «какого цвета яйца у дрозда?» — мы с тобой понимаем одинаково?
П.С. я, конечно, понимаю, что мы на доске «flame», но всё-таки у вас ЛОРовцев превращать во флейм любую тему — просто талант! ;)
Соображать — это как ? Догадываться, а потом быть обвиненным в домыслах ? Что за женская логика ?
Опять подмена понятий на свой собственныый лад. Это не конкретный вопрос. Здесь нужно уточнение.
Я не лоровец, т.к. не являюсь линуксоидом ;-) На ЛОР меня тянет желание повеселиться, читая посты таких, как ты, задающих «конкретные» вопросы ;-)
P.S. Nothing personal.
Молча.
Значит, в споре со мной тебе хватило такой <font size=«-2»>(чтоб тебе лишний раз не напрягаться с соображениями, «такой» — это той, которая в первом сообщении этой темы)</font> постановки вопроса, чтобы домыслить <font size=«-2»>(о чём именно, как и договорились, не сегодня)</font>, а тут чего-то не хочешь. Кто ещё из нас «подменяет понятия на свой лад"?… Да и начал почему-то ссылаться на женскую логику.
И почему это тебя сразу должен кто-то обвинить?
Это вопрос, конечно, философский, но тогда можно дойти и до того, что к любому вопросу нужно будет уточнение. Можно даже с тобой поэкспериментировать. Задай мне вопрос, к которому я не сделаю уточнение.
Видимо, давно читаешь — повадки те же стали.
Что за манера така — сначала попытаться «обосрать», а потом сказать, мол «Nothing personal"? Некрасиво, Артём.
Прежде всего, хамство при себе держи. Я - не твоя малолетняя подружка.
Ты, разумеется.
Бред и демагогия.
Хватит придуряться. Или все же будем ?
Значит, и сам оттуда ? ;-)
Сперва «вытащи бревно из своего глаза». Я тебя чем-то унизил? Пардон, и в мыслях не было. Просто ты не можешь,/хочешь/умеешь понимать другого, вот и нервничаешь. Настоятельно рекомендую изучать программирование и попрактиковаться на досуге — очень помогает. Или почитать Канта для пропедевтики.
Цитирую дословно: «Сперва „вытащи бревно из своего глаза“. Я тебя чем-то унизил? Пардон, и в мыслях не было. Просто ты не можешь,/хочешь/умеешь понимать другого, вот и нервничаешь. »
Что я? Понятие(я) подменяю? Какое(ие) именно?
Вообще-то, такие высказывания надо объяснениями сопровождать. Иначе, это не более, чем пустословие.
«Хватит»?! Да ещё и «Придуряться»?! Это что, такая попытка закончить этот наш с тобой флейм не по теме вопроса? Похвально, я за ;).
Но как-то забавно получается. Ты сначала шутишь: «На любой вопрос даю любой ответ ? (c)»
Я тебе пытаюсь показать, что ты просто придираешься (даже эксперимент предложил, с помощью которого можно легко убедиться в возможности придраться к любому вопросу). А получаю в ответ, что это, оказывается, я «придуряюсь».
Ты у меня разрешения чтоли спрашиваешь? ;)
Нет, но многих знаю «оттуда» ;)
Помогает в чём?
Не является НАСУЩНОЙ НЕОБХОДИМОСТЬЮ.
Что еще не означает того, что не нужно вовсе.
Нет, но почему-то постоянно что-то придумываешь.
Не объяснениями, а доказательствами.
Нет, можно продолжать полемизировать. ;-)
Разумеется. Ну что за странные тезисы — «к каждому вопросу требовать уточнения» ?
Тебе для ответа на вопрос «Чему равно значение выражения 2+2 ?» тоже уточнение требуется , что ли? ;-)
Мыслить логически. Найду лекции по матлогике — выложу. ;-))
Достаточно объяснения. Бывает достаточно.
Для доказательства необходима строгость рассуждений, которая в данном треде отсутствует изначально.
сложно назвать последние (с десяток) сообщений иначе как флеймом. ;)
полемизировать — это обсуждать и сравнивать мнения. а тут уже к тому ж и на личности перешли. :-/
естественно, возникнет вопрос: а в какой системе исчисления?
это, конечно, если не придираться к «равно значение выражения».
мда? программирование?
может всё-таки курс «Формальная логика» подойдёт больше?
итого: завязываем. как я уже сказал в аське, по изначальному вопросу можно защищать диссертацию. по объёму создаваемой методологической базы — как раз для кандидатской хватит.
Я пытался. ;-) Но , конечно, доказательства лучше.
Я , конечно, все приукрашиваю. ;-)
Не менее естественен ответный вопрос : «А что, там указаны слагаемые в отличной от десятичной системе счисления ? » ;-)
Я , конечно, понимаю, что фантазия у человека должна присутствовать, но не до такой же степени. ;-)
М-да, программирование.
Давай еще денотационную семантику вспомним, а ? А потом — лямбду.
Прошу прощения, а кто тут модератор ?
Гм… «Пытался»? ;). После моего: «такие высказывания надо объяснениями сопровождать. Иначе, это не более, чем пустословие.» — ты всего лишь сказал, что «Не объяснениями, а доказательствами.». И всё. Ни объяснений, ни доказательств… Чего же ты «пытался» тогда?
Ты даже сам придрался к своему вопросу ;). Но я отвечу. Если не уточнить какая именно с.с., то можно придраться к троичной системе счисления.
Ага, не до такой. А всего лишь до степени: «на любой вопрос даю любой ответ» ;)
А числа там записаны в троичной с.с. ? ;-)
Это ж цитата была. ;-)
Понял смайлик ;)). Ну да, ты и третью придирку нашёл к своему вопросу ;)
С которой понеслась… Нда. А ведь с такой ерунды столько флейма…. =)
Это было утверждение обратного.
Бывает.
Тогда отвечу. Да, они записаны в троичной с.с., без явного указания обратного (того, что не в ней).
вот можно ты тут будешь доказывать цитатами и объяснять значения этих цитат, а? :D
а это указано? что в десятичной?
нет? ну, тогда и придираемся. :D
фантазия? гхм. я вот её тут специально отключил. во избежание.
ибо,
а что, не в четверичной? как вариант понимания написания.
кто ж мешает? но программирование логическому мышлению — не научит. ибо…
(что именно «ибо» — подождём до процитировывания by fly4life)
<font color=«grey»>вот тут придётся перейти на личности.</font>
<font color=«grey»>если бы на меня с нового года не навалилось столько работы — модерирование было бы несколько иначе. как именно — это отдельный разговор, и некоторым этого упоминания будет достаточно. но не для тебя…</font>
<font color=«grey»>не для тебя…</font>
слушайте, есть такая вещь как ася, irc или джаббер, вот идите туда и поговорите :)
Ты будешь смеяться, но с «аси» всё и началось ;).
<font size=«-2»>fly4life, тебе ничего не надпоминает? :</font>
<font size=«-2»>"тут форум, а не чат"</font>
:D :D :D
форум — это устонский чат ;)
Если бы отличалось — указал бы.
Не уверен ;-)
Учит. Тех, кто хочет чему-то научиться.
Тебя очень сложно понять.
… и вот тут мы приходим к пониманию «контекста».
выдёргивая из диалога отдельные фразы, забываем о том, что имеется определённый контекст, в котором есть определения умолчаний, данных, о готорых в самой фразе не упоминаются, но подразумеваются.
и вот к ним, выдирая фразы, можно пытаться подстроить совершенно иной контекст.
используемая система счисления относится именно к этому.
как понятно, остальное, «умолчальное» точно также относится к контексту и может быть трактовано по своему усмотрению.
дополнительно, подразумевается так же испоьлзование темоопределяющих условий — в данном случае — «каждый понимает по своему».
ну, раз уж ты лично знаком более-менее с Шуриком, поинтересуйся у него, насколько у меня фантазия временами работает. ;)
и чем же это именно конкретно оно учит?
именно логически мыслить?
объясни :)
хотя бы свою точку зренияю
именно. только сказано именно то, что и написано.
что довольно странно при моей манере высказываться.
эстонский?
что ж, можно и так понимать…
да толбко шутка предназначалась именно fly4life, и полный смысл (читай: контекст) понятен только ему… :)
Но зачем?..
Лучше к психиатру ;-)
Программирование весьма способствует триенировке навыка устанавливать причинно-следственные связи, а также, основываясь на некоторых отправных данных (документация), конструировать тезисы (алгоритмы и программы), а затем — убеждаться в их правильности или же, напротив, ложности.
Моё кратенькое резюме темы.
С чего началось. Вобщем, ничего лучше не расскажет наш с redbeard спор, чем лог из аськи:
——————————————-
А дальше… я теперь хочу сказать «в людном месте": программист вовсе не обязан знать командную строку (командный интерпретатор, если так будет угодно).
Объясняю почему.
Что такое командный интерпретатор? Командный интерпретатор — это интерактивный интерфейс, который обрабатывает вводимые пользователем команды. А кто такие программисты? Правильно — люди, которые пишут программы ;). Я разделяю программистов на две категории: системщики (пишут системные приложения. Приложения для работы с ядром ОС, драйвера и т.п.) и прикладники (пишут прикладыне приложения. Приложения для пользователей).
Если программист пишет «системную» программу, например, драйвер, то где тут обязательное знание шелла <font size=«-2»>(напомню: который обрабатывает вводимые пользователем команды)</font>? Ему что, нужно знать как будет обрабатываться цикл for в консоли? Да?! Тогда в какой именно оболчке? Интересно, те же разработчики драйверов для видеокарт nVidia пишут драйвера отдельно для пользователей zsh и отдельно для польователей csh? Нет! Их программа (драйвер) вообще от оболочки не зависит. Посему, нужно ли им обязательно знать синтаксис шелла (и, в частности, команду touch, с которой начался весь сыр бор)? Нет, не нужно.
Если программист пишет прикладную программу, например, браузер — операторы языка там, окошки, рюшечки и всё такое — то где ТУТ (при написании этого самого браузера) необходимо знание шелла? Ему что надо знать команду touch?
Далее, что такое программирование? Процитирую одно высказывание Genie, с которым я полностью согласен: «программирование — это не просто запись последовательности действий в терминах какого-то языка программирования (этим является „кодинг“), а ещё и проработка алгоритма программы, т.е. решение задачи нахождения алгоритма поставленного ТЗ». Привязать к этому определению знание шелла можно лишь в одном единственном случае — когда «запись последовательности действий» осуществляется «в терминах какого-то» шелла. И-то это тогда можно больше отнести к «кодингу», а не к программированию как таковому. Да и нужен этот «кодинг» в шелле не программистам, а скорее тем, кто настраивает систему и пишет для её настройки скрипты (а этим занимаются, скорее, сисадмины и прочие пользователи, чем программисты — не их это задача).
Насчёт того, что не знать не получится, так как нету другого выхода, в принципе, практически согласен. Но с одним «НО». Может ему [программисту] и придётся (или даже, скажем так, будет полезным) изучить некоторые команды оболочки, но это вовсе не его задача, не задача программиста. decvar на пару с Анархистом, браво, попали в точку: программист, скорее, должен уметь использовать шелл (что к как таковому знанию имеет весьма косвенное отношение). Точнее я б сказать не смог.
2 UT: программист, который пишет приложения, специально ориентированные для консоли (в народе — скрипты), да, должен знать командный интерпретатор, синтаксис его операторов и переменных. Но, повторюсь, я считаю, что это, на самом деле, не задача программиста. Это, скорее, задача сисадмина.
2 LONGOBARD: а что, составление Makefile’ов и скриптов ./configure является первоочередной задачей программиста? Не буду тыкать пальцами кто именно, но мне рассказывали, что есть как минимум одна IDE, в которой тот же ./configure делается автоматически по нажатию соответствующей кнопочки. Почему автоматическая генерирация ./configure возможна и её реализовали? Потому что это всего лишь рутина, от которой программистов нужно избавлять, чтобы своё время они тратили на действительно свои задачи — писали программы, а не инсталляторы ;).
Теперь я готов выслушать смех в свой адрес, но только обоснованный, т.к. объяснения redbeard меня не впечатлили:
Хотя, может быть это он просто не сумел объяснить мне более внятно по какой такой «задумке» программист много больше, чем администратор и, тем более, откуда всё-таки из этого вытекает, что программист должен знать командный интерпретатор, т.к. потом начался жёсткий флейм по поводу рулезности vi и, соответственно, родилась новая holly war ;). Но это уже к моему опросу не имеет отношения.
P.S. простите, если получилось сумбурно.
Ну, батенька, я же специально сделал оговорку «для расширения профессионального кругозора». Хороший специалист знает свою область досконально, а смежные области — достаточно неплохо. Должен ли автомеханик уметь водить машину? В принципе, зачем? Не надо это ему. Но механик, который сам водит, лучше понимает, как работает машина на трассе. Я — специалист по дифференциальной геометрии, строго говоря. Но меня учили, например, и теории чисел, и даже вычислительным методам. Для полноты понимания проблемм. так и с шеллом. Хорошо, когда IDE все делает, а может, ты можешь для своей задачи что-то подправить, и она будет делать лучше?
Несогласные мы…
Good Luck,
UT
Смежные области говоришь. Но ведь все смежные области он знать не может (да и, с учётом темпов развития IT, слишком долго учиться придётся — жизни не хватит). А почему тогда из всех смежных областей обязан знать именно шелл?
UT, ну какое-то это натянутое сравнение с программистом, знающим шелл. Насколько я понял, тут «автомеханик, водящий машину» рассматривается как «программист, управляющий/настраивающий систему"? Дык, а кто сказал, что для этого необходимо знание шелла? Я, например, на том уровне, на котором может понадобиться программисту, всё могу настроить парой кликов мыши ни разу не обращаясь к шеллу (вбить настройки для сетевого интерфейса, настройки монитора и переферии, и т.п.). Что-то глубже — уже задача сисадмина, а не программиста (а-то получается какой-то мастер на все руки: программы пишет, копается во внутренностях настроечных скриптов дистрибутива, систему настраивает, по дому убирает, бельё стирает ещё и за пивом бегает).
Нда, а что ни говори — хорошее у нас всё-таки образование ;)
«Что-то» может быть и можешь, но вряди это будет как-то относиться к шеллу ;).
А на самом деле, что ещё нужно править программисту, связанное с шеллом, кроме как того самого ./configure? Который, кстати, не всегда и нужен-то. А если и нужен, то не вижу никакого смысла трогать вообще — недостающего не сгенерируется, а лишнее вообще некритично для самой программы — главного плода программиста.
Спор ни о чем. Это все равно что спорить, может ли существовать сферический конь не в ваккууме. Покажите мне хотя бы одного UNIX программиста, который не имеет базовых знаний консоли.
P.S.: юзерь, написавший hello world программистом не считается.
Эхехех… «Базовых». База — это ещё далеко не «знание».
Сисадмином, ведь, меня делает не базовое знание программирования (а оно присутствовать у сисадмина в некоторой степени должно). Вот и программиста делает его таковым не базовое знание консоли.
Хорошо, я не видел ни одного UNIX программиста, который не умеет например пользоваться пайпами, &&, ||, ; и прочим. Я не видел ни одного программиста, который не умеет пользоваться базовыми командами по типу touch, less, cat, grep. Вот это я считаю базовывми знаниями. Не все программисты умеют пользоваться sed-ом, не все знают о сущстввании разных типов кавычек и чем они отличаются. Но это уже не базовые знания.
Моё мнение такое:
1. UNIX-программист, является UNIX-пользователем, иначе он — НЕUNIX-программист. Сложно писать под UNIX не под UNIX’ом.
2. UNIX-пользователь обязан знать shell, потому что это UNIX way.
3. И, вообще, программист — не секретарша. Он должен *знать* дохера, потому что:
Чтобы понять, что же на самом деле делают программисты, требуется альтернативная стратегия мышления (называемая картостроение), поскольку программирование — это, по сути, процесс усвоения возможностей системы, природы задачи и желания, а затем выражение результатов исследования на языке программирования. Вся суть в исследовании деталей наших желаний и понимание их таким способом, что мы можем отследить всю их сложность.
— Alan G. Carter & Colston Sanger,
Programmers' Stone
Вот.
P.S. С другой стороны, MacOS X — тоже UNIX ;)