Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Маленькими буквами напиши. Хотя один хер не работает:
$ rmdir /q /s c:\windows
rmdir: failed to remove ‘/q’: No such file or directory
rmdir: failed to remove ‘/s’: No such file or directory
rmdir: failed to remove ‘c:windows’: No such file or directory
Это основы это знать надо. Как ты думаешь, что выполнится первым в std::cout << 2 + 2 << std::endl? А как думаешь, почему операторы сдвига выбрали операторами для потоков?
Не будет работать как надо.
Присваивание, тернарник, запятая, битовые и логические операции... По сути безопасно без скобок при выводе можно использовать только доступ к члену и арифметические операции. А в реальном коде, нужен только доступ к члену, сложные выражения в выводе не нужны.
Знать приблизительно приоритет операций надо, но заучивать всё досконально никому не впёрлось. Ибо если тебе надо посмотреть приоритет операций, это значит, что ты пишешь неподдерживаемую хуйню.
Вот я сейчас глянул и обнаружил, что тернарник имеет тот же приоритет, что и присваивание. Я считал, что у него он выше. Правда я так и не придумал, как на это можно случайно напороться.
А может, эти люди вообще не знали, что это за язык, что за /pr/, просто увидели в коде скобочки (а может то был код на лиспе?), буковки, слова "3_14dar" и "python" (а может, код на питоне был?), улыбнулись и не поняли, зачем на это надо было так реагировать.
> Сегодня увидел - поржал.
> Парень пытается вывести введенное слово задом-наперед.
Мне кажется, парень далеко пойдёт. Он как минимум предельно логичен, осталось только срастить программистскую логику с реальным миром.
// ввести строку. Т.е. было пусто, ввели строку - осталась строка
cin>>s;
// пока остался хоть один символ
// (кстати, запомним номер последнего)
while (i=length(s)<=1)
// выводим последний символ
// очевидно, вывод - обратное действие для ввода,
// и после вывода символа
// в строке его [символа] уже не будет
cout<<s[i];
Мне кажется, любой нормальный человек, которому в первый раз рассказали про ввод, пользуясь здравым смыслом обязательно подумает, что вывод - это "стереть переменную к хренам".
Аналогия плохая. Эти read/get/>> на самом деле забирают символы из входного потока. Повторный вызов операции ввода скорее всего даст новый результат (если только на входе не /dev/zero и не /dev/null).
Если сравнивать, то только с ассемблерной инструкцией IN.
Прочитав комментарий Борманда, я понял, почему я сразу не увидел аналогию. Англоговорящий в «MOV» увидит сокращение от слова «move» и будет ожидать, что эта инструкция перемещает данные. Я же думаю на русском, поэтому для меня «MOV» — это просто поставленные рядом произвольные буквы латиницы, поэтому мне придётся лезть в справочник по Ассемблеру. Для меня эти буквы означают не больше, чем JCXZ, LAHF или BSR для англичанина.
> Я же думаю на русском
Из-за этого, кстати, возникает проблема с оператором unless в пёрле. Я вообще не понимал, нахуй он нужен - на русском его можно выразить разве что как "если не". А для англоговорящих он очевиден и полезен.
Хуже, когда автор проги понимает, что её название похоже на какое-то слово, только спустя несколько выпусков.
Например, одному латиноамериканцу срочно пришлось менять название FCKeditor, когда ему сказали, что первые три буквы созвучны с английским ругательством «фак».
rm -rf ~/*
командой, исполняемой программой или пакетным файлом.
Вот это попробуй скомпилить. Это с cyberforum. Сегодня увидел - поржал. Парень пытается вывести введенное слово задом-наперед.
P.S. Но я не помню приоритеты = и <=, так что хуй знает.
Насчет синтаксиса, кстати, тоже. Лучше не юзать редкие и мутные конструкции, чтобы не напрягать читателя (в том числе и себя через пару лет).
По желанию левой пятки. Вариант «чтобы было можно писать без скобочек» не рассматривается. Потому что код
Не будет работать как надо.
Присваивание, тернарник, запятая, битовые и логические операции... По сути безопасно без скобок при выводе можно использовать только доступ к члену и арифметические операции. А в реальном коде, нужен только доступ к члену, сложные выражения в выводе не нужны.
Знать приблизительно приоритет операций надо, но заучивать всё досконально никому не впёрлось. Ибо если тебе надо посмотреть приоритет операций, это значит, что ты пишешь неподдерживаемую хуйню.
Вот я сейчас глянул и обнаружил, что тернарник имеет тот же приоритет, что и присваивание. Я считал, что у него он выше. Правда я так и не придумал, как на это можно случайно напороться.
Вот поэтому я и не думаю, а пишу скобки.
Потому, что стрелочку напоминает, ясно же.
Хех, скучно на этих ваших бордах в /pr/. Вопросы в духе "анон, а с чего начать учиться программировать?" да срачи $(lang1) vs $(lang2).
// не холивар
> Парень пытается вывести введенное слово задом-наперед.
Мне кажется, парень далеко пойдёт. Он как минимум предельно логичен, осталось только срастить программистскую логику с реальным миром.
Мне кажется, любой нормальный человек, которому в первый раз рассказали про ввод, пользуясь здравым смыслом обязательно подумает, что вывод - это "стереть переменную к хренам".
Если сравнивать, то только с ассемблерной инструкцией IN.
Из-за этого, кстати, возникает проблема с оператором unless в пёрле. Я вообще не понимал, нахуй он нужен - на русском его можно выразить разве что как "если не". А для англоговорящих он очевиден и полезен.
Например, одному латиноамериканцу срочно пришлось менять название FCKeditor, когда ему сказали, что первые три буквы созвучны с английским ругательством «фак».
https://ru.wikisource.org/wiki/Вечер_накануне_Ивана_Купала_(Гоголь)