Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Вчера ночью написал сие чудо , сегодня когда увидел - меня чуть приступ не хватил.
Выводит в консоль всё содержимое текущего каталога и всех вложенных.
Просто спать надо больше, тут даже itter уже намекает (слово iterator с одной t).
Сейчас то я прекрасно осознаю, что помещать в условие while что-то более-менее сложное - говно.
namespace fs = boost::filesystem;
for (fs::recursive_directory_iterator rit(fs::current_path());
rit != fs::recursive_directory_iterator();
++rit)
{
std::cout << rit->path() << std::endl;
}
вот кстати не нравится говнецо в бустовом файлсистеме, где для проверки итератора не заведено operator bool (), а надо сравнивать с пустым итератором с длинным именем
Лямбды это хорошо, но только если использовать по предназначению, а то по читабельности хуже хардкорного хаскеля получается.
С++ с каждым новым стандартом расширяет список возможных диагнозов.
Тем что BAT скрипты (как и вся виндовая консоль) сраное ёбаное говнище доисторического мамонта, написаное укуренными в хлам индусами-гомосексуалистами. Хотя green тут не к месту, ибо это истинная правда. Чего стоит только setlocal enabledelayedexpansion, без которого переменную в цикле не поюзать. Или всякие %date:~0,3% для строковых операций... Или for и set, которые выполняют чуть менее, чем 90% всех операций, доступных в этом языке.
Так, а теперь по делу. Походу автор выводил названия просто для отладки, а потом эта программа будет делать что-то умное типа отправки файлов по сети, подсчета CRC и т.п.
P.S. Повершелл такое же говно. Из вменяемых языков под виндой из коробки только JScript через WSH.
Ну не скажи. Что-то серьёзное на батниках не напишешь конечно, но простенькие задачки они вполне могут решить. Приведу свой пример. Мне нужно было с помощью консольной утилиты перекодировать >4000 .wav треков из одного каталога и перемещать уже перекодированные в другой. Расчехлять IDE было лень. поэтому решил всё это дело на .bat организовать. Пропыхтел я над скриптом минут 40, но результат меня вполне удовлетворил. В другой раз попробую WMI.
> Пропыхтел я над скриптом минут 40
Ну собственно лишнее доказательство того, что батники говно. Вот всяко минут 35 из них ушло на ёблю с синтаксисом for'а и 5 на полезную работу.
Тот же баш хоть и тоже довольно укурен, но на нем такое пишется в районе 5-10 минут, а может и быстрее.
> 35 из них ушло на ёблю с синтаксисом
Тут ты прав. Пока не узнал про setlocal enabledelayedexpansion никак не мог понять, почему переменные в цикле работают неправильно.
Ну собственно до того момента, как я столкнулся с этой "фичей" фора, мне нравились батники... Теперь же к ним осталась только ненависть.
P.S. Да и как бы дома линукс, на работе, в основном, линукс... уже как-то привык к башу, пёрлу и питону. А после них батники, сам понимаешь, неюзабельны.
P.P.S. А под виндой посмотри все-таки в сторону JScript. Язык вменяемый, если на JavaScript кодил - то вообще учить ничего не придется, только гуглить нужные для задачи объекты и методы. Управление планировщиком задач, чтение\запись текстовых файлов, запуск внешних команд, отправка емейлов там элементарно делаются...
> ну не люблю я не нам писать, на js как-то приятней
Та же хрень. Он выглядит более вымученным. Но для школьников - самое то.
> имеет одинаковые возможности
Не совсем. Сейчас я точно врать не буду, но в JScript какой-то фичи не было. Озабоченные быдлокодеры делали связку с бейсиком.
Правда, это была фича толи языка, толи библиотеки.
Посмотрел по записям. Судя по всему, там нет реализации окошек сообщений и полей ввода. Вот что пишут в инете: "JScript doesn't support the VBScript InputBox function, and WSH doesn't provide a method for user input."
Поэтому упоротые делают так:
var vbe = new ActiveXObject('ScriptControl');
vbe.Language = 'VBScript';
return vbe.eval(func + '(' + args.join(', ') + ')');
Все переменные? Или только управляющие переменные цикла?
Если второе, то правильно.
И в Дельфи и Аде они внутри иммутабельны тоже.
А потому, что нехуй.
Когда я вижу заголовок цикла "для и от а до бэ", то я сразу понимаю, что цикл выполнится для и от а до бэ (ну возможно, вылетит раньше) и я не предполагаю, что внутрь воткнут "и присвоить а", что сделает цикл хитрожопой хренью с возвратами. И если я вижу в коде внутри вот это вот "и присвоить а", которые пропускают только древнющие как говно мамонта компиляторы, ну и совместимые с ними, то я испытываю БОРЛАНД
Так там же скобки не хва... OH SHI-
в этом и плох новый стандарт
Сейчас то я прекрасно осознаю, что помещать в условие while что-то более-менее сложное - говно.
А, нет, стойте! А самое первое значение чего?
С++ с каждым новым стандартом расширяет список возможных диагнозов.
^^
C++ всегда читался хуже хаскелла.
Очевиднофикс
Так, а теперь по делу. Походу автор выводил названия просто для отладки, а потом эта программа будет делать что-то умное типа отправки файлов по сети, подсчета CRC и т.п.
P.S. Повершелл такое же говно. Из вменяемых языков под виндой из коробки только JScript через WSH.
Ну собственно лишнее доказательство того, что батники говно. Вот всяко минут 35 из них ушло на ёблю с синтаксисом for'а и 5 на полезную работу.
Тот же баш хоть и тоже довольно укурен, но на нем такое пишется в районе 5-10 минут, а может и быстрее.
Тут ты прав. Пока не узнал про setlocal enabledelayedexpansion никак не мог понять, почему переменные в цикле работают неправильно.
Следует юзать не структурированные if и for, а подпрограммы
call :же!
Костыль на костыле и костылем погоняет. Впизду такие удобства.
P.S. Да и как бы дома линукс, на работе, в основном, линукс... уже как-то привык к башу, пёрлу и питону. А после них батники, сам понимаешь, неюзабельны.
P.P.S. А под виндой посмотри все-таки в сторону JScript. Язык вменяемый, если на JavaScript кодил - то вообще учить ничего не придется, только гуглить нужные для задачи объекты и методы. Управление планировщиком задач, чтение\запись текстовых файлов, запуск внешних команд, отправка емейлов там элементарно делаются...
Древние бейсики мне нравились. А с vbs у меня плохие отношения, ну не люблю я не нам писать, на js как-то приятней.
Ну а так да. Любой язык, поддерживаемый WSH имеет одинаковые возможности.
Та же хрень. Он выглядит более вымученным. Но для школьников - самое то.
> имеет одинаковые возможности
Не совсем. Сейчас я точно врать не буду, но в JScript какой-то фичи не было. Озабоченные быдлокодеры делали связку с бейсиком.
Правда, это была фича толи языка, толи библиотеки.
Поэтому упоротые делают так:
stdin и аргументы командной строки вполне читаются 😉
WUT scripts
В смысле, не поюзать даже для чтения?
Если второе, то правильно.
И в Дельфи и Аде они внутри иммутабельны тоже.
А потому, что нехуй.
Когда я вижу заголовок цикла "для и от а до бэ", то я сразу понимаю, что цикл выполнится для и от а до бэ (ну возможно, вылетит раньше) и я не предполагаю, что внутрь воткнут "и присвоить а", что сделает цикл хитрожопой хренью с возвратами. И если я вижу в коде внутри вот это вот "и присвоить а", которые пропускают только древнющие как говно мамонта компиляторы, ну и совместимые с ними, то я испытываю БОРЛАНД
> не могу понять технических причин так делать
Там выше зеленым они описаны.