LINUX.ORG.RU

О синтаксисе в оригинальных руководствах... Сплошная БОЛЬ!!!

 , , , ,


0

1

У меня есть большая проблема- я НЕ ПОНИМАЮ языка синтаксиса официальных руководств. Это когда в примеры вставляют тонны каких-то левых скобочек, нихрена не объясняя что это такое и для чего нужно.

Такой стиль используют как в большинстве man-страниц, так и в оригинальных (английских) руководствах по языкам программирования. Зачем- непонятно. Наверно чтоб запутать. Ведь известно, что краткость сестра таланта, так зачем усложнять?

Для примера- тема циклов в Bash.

Синтаксис из официального руководства:

for name [ [in [words …] ] ; ] do commands; done
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done

Что это такое? Что за скобочки, что за точки с запятой? Откуда все это взялось?

Почему в 99% русскоязычных руководств этой фигни мы просто не встретим? В большинстве сайтов будет написано так:

for переменная in список_значений
do
    # Перечисление команд
done

И несколько примеров вдобавок, чтобы лучше понять. Вот это я понимаю - по-человечески. Это хотя-бы МОЖНО ПОНЯТЬ! А то что выше это для каких-то инопланетян придумано. Я целый час сидел и пытался понять что за хрень я смотрю. А потом загуглил циклы на русском и сразу все понял. К чему это искусственное усложнение? Кому это выгодно?

И ведь абсолютно ТА ЖЕ ИСТОРИЯ в большинстве man-страниц к командам Linux. Там в разделе «синтаксис» стоят какие-то скобки, иногда их просто дохрена. А в реале, когда ввожу эти команды, то никаких скобок и в помине нет. И это охрененно запутывает и усложняет изучение с помощью официальных мануалов.

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

goingUp ★★★★★ ()

Это вот то что гении юникса изобрели, чтобы скрипты выглядели как заклинания. Чтобы администраторы юникса чувствовали себя избранными. Это ещё хорошо хоть скрипты на перле ушли в прошлое.

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

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

Тогда почему все эти конструкции не объясняются подробно? «Взрослые» и так поймут? А я дурень думал, что руководство - это самый исчерпывающий документ.

shkolnik_2021 ()

Возможно, стоит еще пробовать писать код

➜  ~ for (( i=1; i <= 10; i++ )); do echo $i; done
1
2
3
4
5
6
7
8
9
10
➜  ~ for name in Ann Jul Ron; do echo $name; done
Ann
Jul
Ron
➜  ~ 
hanharr ()
Ответ на: комментарий от anonymous

Это вот то что гении юникса изобрели, чтобы скрипты выглядели как заклинания. Чтобы администраторы юникса чувствовали себя избранными. Это ещё хорошо хоть скрипты на перле ушли в прошлое.

Я тоже считаю, что это какое-то сектанство на тему элитарности. Искусственно повысить порог вхождения, типа того. Заметил, что в 70% случаев официальное руководство содержит какие-то странные конструкции, которых просто нет в русскоязычных мануалах, где объясняется все много проще. Даже вот открыл уроки на ютубе, просмотрел несколько лекций, и ничего подобного даже близко нет.

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

Я все понял. ЧЯДНТ?

Имеешь опыт баша или других ЯП, вот что ты делаешь так!

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

Естественно поймут, и напишут пост в бложике, где все для тебя разжуют, так что забей на руководства и читай все в бложиках) А если серьезно, не ботай баш, он безблагодатен. Лучше учи пистон, на котором можно нормально программировать.

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

Ну там же все просто. Реально просто.
Покодь полгода - тоже будешь структуру видеть сходу. Это просто и прикольно.

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

вроде даже школьник должен немного разобраться…

Поржал :)

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

Естественно поймут, и напишут пост в бложике, где все для тебя разжуют, так что забей на руководства и читай все в бложиках) А если серьезно, не ботай баш, он безблагодатен. Лучше учи пистон, на котором можно нормально программировать.

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

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

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

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

Нет ну отчасти он прав всё же. Я уверен больше чем на 99% что >90% всех существующих в принципе на этом сайте с ходу не дадут мне руководство с полной информацией как понять такое [time [-p]] [ ! ] command [ [|⎪|&] command2 ... ] ненене тут дело не в и так понятно. Тут дело в конкретном формате который обязан быть описан, мы же не дети малые и слово формат для нас не как хочу так и ворочу.

Полноценных мануалов у большинства утилит вообще нет. Вернее они на уровне –help. Полная информация есть в мануалах только мелких утилит.Есть конечно исключения с подробными и огромными man, но их не так и много. Это же просто исторически сложившееся выделение и не более того. Я про то что выше. Возраст тут не причём. Дело в контексте. С учётом того что [ это команда, а новичёк не в курсе у него восприятие мира ещё 5 раз перевернётся. Реализация man как по подаче так и по его написанию одно из самых худших что можно было придумать. Предполагается что допрёшь до всего методом проб и ошибок, а не явного чтения документации =)

Но! Они хотя бы есть и их нехотя но пишут все. Что нивелирует все ужасы внутренностей и представления. Без man всё встанет колом.

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от LINUX-ORG-RU

не дадут мне руководство с полной информацией как понять такое [time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]

В руководстве будет описана каждая закорючка, эту информацию нужно загрузить в мозг, потом там должен пройти некий процесс и получится результат. Ну или забить на руководство и купить книжку «Как выучить C++ баш за две недели», где автор даст только третий вариант фор из ОП, и этого будет достаточно.

С учётом того что [ это команда, а новичёк не в курсе

Возможно придется прочитать все руководство, и даже некоторые другие. Увы.

Возраст тут не причём.

Да это ОП нас троллит тупостью, а я его вот троллю возрастом.

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

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

LINUX-ORG-RU ★★ ()

В руководстве к man описываются принятые соглашения (про скобки и выделение жирным/курсивом), другое дело, что но не все авторы man-страниц ему следуют.

man man

unterwulf ()

Основы всегда понимать сложно так как основная суть в контексте который складывается в голове исходя из опыта. Привыкнешь. Да и порой такая компактная запись ещё тебе самому будет нравиться. Не факт конечно.

И да прочти man man это лол man к man то что тебя интересует там в начале

...
  В  разделе  СИНТАКСИС  используются  следующие соглашения (которые также могут быть
       использованы в качестве основы для других разделов).

       текст жирным шрифтом      набирать точно как показано.
       текст курсивным шрифтом   заменить соответствующим значением.
       [-abc]                    любой или все параметры внутри [ ] необязательны.
       -a|-b                     параметры,   разделённые   |,   не   могут    указываться
                                 одновременно.
       параметр ...              повторяющийся параметр.
       [выражение] ...           всё выражение внутри [ ] может вводиться несколько раз.

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

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

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

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

shkolnik_2021 ()

Типичная психология школоты:

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

Типичная психология взрослого инженера:

«Я прочитал книгу, нихера в ней не понял, пожалуй надо прочитать еще раз и найти еще один источник, тогда пойму.»

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

Ну, к man ты будешь обращаться часто, запоминать всё смысла нет, сотню другую раз откроешь и перестанешь на это обращать внимание, вернее просто взглядом будешь выцеплять информацию из разделителей когда уже понимаешь зачем они там. Это просто форматирование, оно не спроста такое. Хотя и вырвиглазное, да. Когда будешь ещё встречать подобные нежданчики, задавайтя вопросом «А для чего именно так?» а не «Какого хрена?!» изменить ты ничего не сможешь сразу, а вот понимание приходит во время практики. Инструмент становиться удобным если понимаешь не только как с ним работать, но ещё почему он именно такой. Это либо на своём опыте узнаешь либо скажут

LINUX-ORG-RU ★★ ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от Alve

Типичная психология взрослого инженера:

А когда то у взрослых инженеров не было способа «айти еще один источник» и приходилось понимать то что есть самостоятельно =)

LINUX-ORG-RU ★★ ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
for name [ [in [words …] ] ; ] do commands; done


Конкретно здесь «[ ]» обозначают необязательные части выражения, «words …» — то, что элемент может повторяться, описаны эти детали обозначения синтаксиса в страницах руководств (man pages), как уже сказали выше, в «man man».

Указанная выше строка описывает такие возможные варианты:

for name in word1 word2 и т.д. ; do commands; done
for name in ; do commands; done   # необязательное "words …" 
for name ; do commands; done   # необязательное "in words …"
for name do commands; done   # необязательное "in words … ;"

Последние 3 варианта выполняют команды для каждого позиционного параметра (о которых написано в разделе PARAMETERS или ПАРАМЕТРЫ, в зависимости от перевода), о чем в руководстве написано явно.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

А когда то у взрослых инженеров не было способа «айти еще один источник» и приходилось понимать то что есть самостоятельно =)

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

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

Про man man тебе уже сказали:

bold text          type exactly as shown.
italic text        replace with appropriate argument.
[-abc]             any or all arguments within [ ] are optional.
-a|-b              options delimited by | cannot be used together.
argument ...       argument is repeatable.
[expression] ...   entire expression within [ ] is repeatable.

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

Чтобы жизнь была полегче, используй пейджер most, который выводит жирный и курсив разными цветами:

PAGER=most man bash

И да, man most.

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

я НЕ ПОНИМАЮ языка синтаксиса официальных руководств

Ты не уяснил разницу между учебником и документацией.

Такой стиль используют как в большинстве man-страниц, так и в оригинальных (английских) руководствах по языкам программирования. Зачем- непонятно. Наверно чтоб запутать.

Нет, не запутать, просто они должны быть исчерпывающими.

papin-aziat ★★★ ()

тут уже пробегал мемуар Кернигана (о группе откуда сишка и уних да plaNIX) - про то что первые манны обычно были одностраничные куда умешалась и полная кракадилина EBNF(али ещё какой вариант BNF)

ps. во всяком ремесле/искусстве где важна роль преемственности естественно распухание интерфейсов со временем -

pps. радостно это всё

ща листаю МПСиС (журнал микропроцессорные средства и системы - начато в конце 1983 ) - как раз тогда ( -36 годиков от сейчас) - была очередная цифровизация ( там у Ершова прикольный пёрл в статье о арм служащих (ака клерки + руководители + ведующие)(в рамках сссрия) - " типо в связи с известными демографическими изменениями которые предстоят нужно как можно сильнее (путём повышения кпд) выспободит руки с задач обслуживания управленческих задач что бы обеспечить трудовыми ресурсами не автоматизизуемые области - а некоторые прогнозы очень точные ) …

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

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

qulinxao3 ()

у Кена Томпсона в Communication of ACM ( 1969 г. +- ) есть реализация грепа как ndfa который строит машкод матчера по вот этим вот твоим скобочкам

см BNF ( 1961 г - Гагарин там , Алгол-60 там же )

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

Зашёл почитать безинформативный скородроч бумерашки.

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

Проблема в том, что стандартный линуксовый пейджер less не умеет отображать жирный шрифт и курсив

Это ложное утверждение, см. 'man less' на предмет ключей "-R", "-r", переменной окружения «LESS».


PS. В Slackware вывод страниц man изначально достаточно цветной ;-)

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от Alve

Мне тут на полном серьёзе один программист затирал про то, что если книга непонятна - то она плохая и читать её не надо.

Mamin_simpotyaga ()

Это разве не форма Бэкуса-Наура?

Dred ★★★★★ ()

Что это такое? Что за скобочки, что за точки с запятой? Откуда все это взялось?

Гвидо, ты что ль?

ya-betmen ★★★★★ ()

Я не очень понимаю людей, не впитавших БНФ с молоком матери. Плиз, повтори, ты реально не шаришь, ламо?

zendrz ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей