Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Правильно ли я использую исключения?

Лучший ответ:
Нужно сделать отдельное исключение NotEnoughBonusesException и бросать его, остальные логировать.try {
}
catch (App\Exception\NotEnoughBonusesException $e) {
      $transaction->rollBack();
      Yii::$app->session->setFlash('error',  'Недостаточно бонусов для оплаты.');
}
catch (\Throwable $e) {
     Yii::$app->session->setFlash('error',  'Произошла ошибка.');
     $transaction->rollBack();

    // Нужно бросить исключение дальше, чтобы обработчик по уполчанию его занес в лог
    // Надеюсь в Yii есть обработчик по умполчанию?
    throw $e;
}
Также вам следует создать базовый класс для всех исключений вашего приложения, а не использовать \Exception.
Если вы хотите передать сообщение для пользователя вместе с исключением, создайте интерфейс UserFriendlyExceptionInterface с методами setUserMessage/getUserMessage и используйте их для отправки сообщения об ошибке пользователю:try {
} catch (App\Exception\UserFriendlyExceptionInterface $e) {
    Yii::$app->session->setFlash('error',  $e->getUserMessage());

    throw $e; // Передаем дальше для логирования
}

Худший ответ:
Как правило, исключения должны срабатывать в тех ситуациях, когда не возможно вернуть user friendly ответ пользователю. Все исключения должны писаться в логи, и не должны выводиться на экран (в production-режиме). Вы же как я понимаю, хотите вывести пользователю статусное сообщение. Так что нет - в вашем случае исключения не к месту.
Вопрос: Автоматическое размещение фото по папкам, реально?

Лучший ответ:
Ну блин. Ща формально правильное решение приведу на тупой вопрос.
Создаём тестовые "фотографии", тысячу штук:
py "(f'{i:04}.img' for i in range(1000))" | xargs -n 1 touch
А вот и наша программа:
#!/bin/bashbin
# Сама создаёт папку:
mkdir my_folder
# И переносит туда 15 фотографий:
ls *.img | head -n 15 | xargs -n 1 mv -t my_folder
Как видите всё возможно.
На какой ОС?
Пор какому принципу выбрать 15 фото из тысячи?
С каким именем создать каталог?
Что, один каталог?
Почему 15 файлов? Всегда 15? Ок, 15 так 15.
Ну что за люди, может они все телепаты, а только я один такой урод, что ситать чуджие мысли не могу на рсстоянии?

UPD.
Даже опечатки исправлять не буду. Прям до трясучки бесит вот такая постановка вопросов. 
Такое ощущение, что автору лень даже свой вопрос перечитать, прежде чем запостить, а не то, что погуглить и секунду подумать!

UPD2.
Ну ок, в каментах автор вопроса обмолвился (нечаянно, похоже), что ему надо все файлы распихать по папкам по 15 штук.
Вот, держите:
ls *.img | py -l "(p.mkdir(exist_ok=1) or f.rename(p/f) for p, f in ((pathlib.Path(f'{i//15:03}'), pathlib.Path(f)) for i, f in enumerate(l)))"
Тут ls *.img перечисляет все файлы, а однострочник на питоне весь список перебирает, нумерует, создаёт N/15 каталогов (где N - общее количество файлов), и распихивает файлы по этим каталогам: с нулевого (по счету) по четырнадцатый в "000", с 15 по 29 в "001" и т.д.

UPD3.
Ну ок, для винды будет примерно так (попробовать не на чем, но должно работать):
py "(p.mkdir(exist_ok=1) or f.rename(p/f) for p, f in ((pathlib.Path(f'{i//15:03}'), pathlib.Path(f)) for i, f in enumerate(sorted(pathlib.Path('.').glob('*.img')))))"

Худший ответ:
Если для Windows, то есть такая прога FolderAxe
Вопрос: Использование и обращение к std::pair в std::map?

Лучший ответ:
it->first; // string
it->second; // pair<int,int>
it->second.first; // первый int
it->second.second; //второй int

Худший ответ:
switch вряд ли примет строку в качестве критерия. Придётся сделать примерно так:typedef enum {
	Operation_AND,
	Operation_OR,
	Operation_NOT,
	...
} Operation_Key;

map<Operation_Key, pair<int, int>> operators_sw_map; //use in initialize method

switch(it->first) 
{
case Operation_AND:
	...
}
Вопрос: Как обновить таблицу в приложении на Python?

Лучший ответ:
Выполнить запрос данных снова.
И главное: добавленная запись должна отвечать условиям фильтра.

Худший ответ:
Только переписав программу. 
А если это был вопрос, что именно надо изменить в программе, то увы, на него не ответить не видя исходников.
Вопрос: Excel файл занят другим пользователем, как узнать кем именно?

Лучший ответ:
На сервере с вашей шарой запускаешь compmgmt.msc > Общие папки > Открытые файлы и смотришь кто работает с файлом. Также можно воспользоваться  консольной утилиты Openfiles

Худший ответ:
Возможно, ФИО показывает у тех, кто заполнил это поле в параметрах. 
Заставьте всех пользователей внести ФИО в параметрах и будете знать каждого занимающего файл.
Вопрос: Как узнать api от бк?

Лучший ответ:
Заходим на сайт букмекера и ищем где-то кнопочку API, нажимаем на неё и ознакамливаемся. Естественно большая часть букмекеров не дают API, но это не означает что вы не может написать им в саппорт и попробовать договориться. Тут уже все индивидуально и в теории получить доступ к данным можно почти всегда, все зависит от ораторского мастерства, ну или кошелька.

Худший ответ:
не вижу проблему. Если вы хотите интегрировать на свой сайт API букмекерской конторы, то просто напишите мне на почту support@betseller.net и я объясню как это сделать максимально быстро и дешево при сохранении высокого качества.
Вопрос: Стану ли я автоматически соавтором приложения, если автор скопирует и использует код без изменений из моего ответа на Тостере?

Лучший ответ:
Нет.
Вам ещё авторство своего же кода бы доказать, лол.

Худший ответ:
Так то всё публикуемое на Хабр-и-Ко только для личного не коммерческого использования.Использование Пользователем Приложений, а также размещенного в них Контента для личного некоммерческого использования допускается при условии сохранения всех знаков охраны авторского права, смежных прав, товарных знаков, других уведомлений об авторстве, сохранения имени (или псевдонима) автора/наименования правообладателя в неизменном виде, сохранении соответствующего объекта в неизменном виде. Исключение составляют случаи, прямо предусмотренные законодательством Российской Федерации или дополнительными документами на использование отдельного Сервиса.
Вопрос: Как заключить background-image в красный фон данного svg?

Лучший ответ:
держите

Худший ответ:
mask или pattern
Вопрос: Обучение Java курсы или ментор?

Лучший ответ:
Ни то, ни другое. Просто возьмите учебник.

Худший ответ:
За 250$ можно купить читалку, от нее пользы будет больше.
Вопрос: Как называется профессия в работу которой входит восстановление данных?

Лучший ответ:
IT-криминалист.

Худший ответ:
Если рассматривать именно профессию, то IT-Специалист, а должность в организациях может называться что-то вроде "Специалист по восстановлению данных".
А вы с какой целью интересуетесь?
Вопрос: При установке статического ip адреса, можно ли к нему обращаться из интернета?

Лучший ответ:
Если подключить услугу статического IP он будет так же за NAT-ом и "серым" или же статический всегда является белым. Во всех известных мне случаях эта услуга предоставляет белый статический IP. 
Хотя на всякий случай неплохо уточнить у провайдера, а то мало ли...или же статический всегда является белым
Вообще статический разумеется может быть и серым. Просто обычно серый статический как платную услугу не предлагают, ибо не за что там платить.
В общем белый(реальный) - это адрес который маршрутизируется в глобальной сети. А серый это частный. Оба могут быть как динамическими (меняться каждый раз) или статическими (жестко закрепленными за определенным хостом)

Худший ответ:
А по адресу непонятно белый он или серый? Если адрес не из частных диапазонов, то должен быть белым, то есть маршрутизируемым в интернете. 
https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D...
На самом деле, непосредственно роутеру может выдаваться серый постоянный IP, а после провайдерского NAT он может становиться статическим белым, а может и не становиться :)  один на нескольких клиентов, например. Лучше проверить в яндексе, посмотреть со своего адреса страницу https://yandex.ru/internet/
Вопрос: Нужно реализовать сайт видеоконференций, что использовать?

Лучший ответ:
WebRTC

примеры на mdn

Худший ответ:
А гуугл hangouts не рассматривали?
Вопрос: Какой план обучения программированию?

Лучший ответ:
www.google.com.ua/search?q=site%3Atoster.ru+план+обучения+программированию

Худший ответ:
Важно разобраться с математикой - теорией множеств и логикой. На эти темы есть неплохие книги Шеня (1, 2, Elm - очень простой, дает быструю обратную связь, можно разрабатывать приложения из браузера, но вместе с этим достаточно мощный. Правда, он ориентирован на фронтенд и предпологает как минимум знание HTML, а лучше и CSS.
Полезно так же прочитать старый SICP.
Вопрос: Как перейти из инженера в программисты?

Лучший ответ:
Из того, что мне кажется наиболее реальным - это программирование контроллеров для инженерных систем зданий
Замечательное решение, даже добавить нечего.
Главное, в веб не идите.

Худший ответ:
Контроллеры - то, что надо. Codesys (IL не надо, ST, CFC, SFC; можно просмотреть LD и FBD) и какие-нибудь SCADA.
Вопрос: Как вывести на страницу 5000 строк безболезненно?

Лучший ответ:
Единственное решение в данному случае это показывать на экране ограниченный список элементов, постепенно добавляя/убирая те которые видно/не видно. Придется программировать на js или искать готовое. Со стороны пхп передавать только голые данные без html оберток и тд.

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

Лучший ответ:
Официальная позиция апворка разбана нет, вероятнее всего никого не разбанили, я никого не знаю кого бы разбанили.
Второй аккаунт это нарушение правил с пожизненным баном

Худший ответ:
регите новый акк, пока еще поведенческое не сильно в апворк вшито, но будьте готовы к интервью
в целом пикантность, конечно, в общей тупизне и, как следствие, быстрому выявлению второго акка
Вопрос: Как лучше писать стили CSS Modules или Styled Components?

Лучший ответ:
То и то отвратительно, благодаря обычному css реально можно просто и быстро стилизовать страницы. А это все калька с десктопных приложений, а их стилизация всегда была кошмаром, попытка добавить какое-нить скругление превращалось в борьбу с кучей xml'ек. Теперь же когда десктоп почти умер, поскольку все массово переходят в вэб, народ пытается перетащить худшие вещи оттуда.

Худший ответ:
На текущем проекте у нас CSS Modules, на предыдущем был styled-components. И то, и то можно использовать. Это вопрос личных предпочтений. Но, пожалуй, styled-components - это более "React way", нежели CSS Modules.
Вопрос: Хорош ли MODx и чем?

Лучший ответ:
Админки в laravel генерируются, либо для CRUD генерируется код и потом добавляется проверка прав доступа - вот и вся админка. Поверьте лучше один раз научится этому чем копаться внутри CMS. 
В вашем случае главный недостаток modx в том что если вы научитесь им пользоваться, то не сможете потом этот навык продать. А если вы сделаете на laravel (пусть без vuejs), то потом сможете найти хорошую работу.
CMS подходят когда нужно быстро сделать и не менять логику работы, т.е. поставил - работает, разве что шаблон поменять, а если нужно менять логику работы, то архитектура CMS скорее мешает чем помогает.
Для laravel много бесплатных генераторов админок:
https://the-control-group.github.io/voyager/
laraadmin.com
https://github.com/LaravelDaily/quickadmin
https://github.com/z-song/laravel-admin
labs.infyom.com/laravelgenerator
https://github.com/appzcoder/crud-generator
https://backpackforlaravel.com/
https://github.com/LaravelRUS/SleepingOwlAdmin

Худший ответ:
По скромному описанию, на чем бы вы стали писать портотип?
Я возможно не совсем понял вопроса, поэтому не кидайтесь тапками) Если вы хотите создать прототип сайта, чтобы показать заказчику как всё будет устроено и как будет работать, чтобы он мог даже потыкать кнопочки, то почему не воспользоваться специальным софтом для прототипирования сайтов (например Axure 8), вместо того, чтобы писать сразу приложение на CMS или фреймворке?Сайт будет каталогом организаций с укзанием на карте, отзывами и т.д. Филиал яндек-карт тугиса и тд. 
Если нужно быстро, то для WP есть +100500 готовых плагинов и тем реализующих этот функционал. И не надо будет стрелять по воробьям из пушки.Если работали с MODx, какие самые крутые вещи в нем есть? Если работали с MODx, какие худшие решения в нем? Что в нем тяжелее всего делать?
Если вы уже работали с фреймворками типа Laravel, то MODX вам не нужен - забудьте про него. По своей сути, MODX это фреймворк с админкой, такие ещё называют CMF. Он нужен тем, для кого CMS уже создаёт ограничения/дискомфорт в чём либо, но полностью перейти на фреймворк не может по какой либо причине, а "работу работать" надо)
Вопрос: Oшибка django NoReverseMatch?

Лучший ответ:
проблема решена.  она оказалась естествеyно очень глупой..но если вдруг кому пригодится...
то в шаблоне этой страницы в теге form в actions стоял не тот адрес
спасибо всем кто пытался помочь)
p.s. по итогу все работает и  в get_absolute_url у меня всетаки стоит kwargs

Худший ответ:
по тексту ошибки видно, во что превращет ваши урлы джанга. И там в том урле нет ни одного kwarg, так что надо писать reverse("boss", args=[self.id])
Вопрос: Как создать IT бизнес в регионе без программистов?

Лучший ответ:
низкий уровень зарплат.
Хорошая заявка на успех среди веб-программистов.Есть ли подобные успешные примеры?
Контор, которые заманивают сладкими сказками про 100 тыр/мес за JS+CSS лично я могу назвать с десяток. И они успешны, да.
А что будет с лопушками, которые на это повелись, никого не волнует. Можете, кстати, сделать набор среди них, я серьёзно. Где то я читал, 
Где-то я слышал, что Земля плоская, а все шароверы - идиоты.
Плюс регионов лишь в цене рабочей силы, но те, кто более-менее что-то знают, уже давно зарабатывают на доширак на фрилансе или уехали в мегаполис на нормальную работу.
Это просто мнение, если что.

Худший ответ:
низкий уровень зарплат.
Хорошая заявка на успех среди веб-программистов.Есть ли подобные успешные примеры?
Контор, которые заманивают сладкими сказками про 100 тыр/мес за JS+CSS лично я могу назвать с десяток. И они успешны, да.
А что будет с лопушками, которые на это повелись, никого не волнует. Можете, кстати, сделать набор среди них, я серьёзно. Где то я читал, 
Где-то я слышал, что Земля плоская, а все шароверы - идиоты.
Плюс регионов лишь в цене рабочей силы, но те, кто более-менее что-то знают, уже давно зарабатывают на доширак на фрилансе или уехали в мегаполис на нормальную работу.
Это просто мнение, если что.
Вопрос: Как получить список отзывов об организации с карт Яндекса?

Лучший ответ:
Пример реализации на php:function get_request_result($request)
           {
                $ch = curl_init();
                 curl_setopt($ch, CURLOPT_URL, $request);

        
                /*Храним сеанс в сессии*/
                curl_setopt($ch, CURLOPT_COOKIEFILE, true);
                curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
                curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
                /**/

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                $server_output = curl_exec($ch);

                curl_close($ch);

                return json_decode($server_output);
            }

$request_token = "https://yandex.ru/maps/api/business/fetchReviews";
$token = get_request_result($request)->csrfToken;
$request_reviews = "https://yandex.ru/maps/api/business/fetchReviews?ajax=1&businessId=id_организации&csrfToken={$token}&page=1&pageSize=5";
$reviews_obj =  get_request_result($request_reviews);
Тогда можно программно получать список отзывов.

Худший ответ:
а зачем через яндекс карты, можно спарсить отзывы такhttps://market.yandex.ru/shop/<ID_организации>/reviews?
Вопрос: Стоит ли использовать pug(jade)?

Лучший ответ:
Мой первый опыт с тогда ещё Jade - это где-то лет 6 назад. И был он, мягко говоря, спорный. Отчасти понравилось, но больше всё-таки нет. Были проблемы, которые многократно перекрывали экономию от укороченного синтаксиса. Я писал где-то на Хабре комментарий на этот счет. В общем, забросил.
Потом несколько раз возвращался и постепенно пришел к выводу, что если наловчиться, то некоторую пользу всё-таки извлечь можно. И важно, что со временем авторы пофиксили некоторые проблемы. Это не значит, что я полюбил Pug, но хотя бы смог использовать его без постоянного раздражения.
Какие именно плюсы? Якобы более чистый код с отступами, отсутствие закрывающих тэгов - это всё ерунда. Может и достоинства, но точно минорные. Главное функционал, полностью отсуствующий в нативном HTML: миксины, автогенерация однотипных блоков, наследование шаблонов. Этого правда не хватает. 
Но есть два но.
1. Подобный функционал есть в любом другом шаблонизаторе? Верно. И я посмотрел несколько (нунчаки, slim, haml, дуст). И везде я сталкивался с какими-то раздражающими нюансами или чего-то не хватало. А раз святой грааль не был найден, то я не нашёл для себя аргументов для смены шила на мыло.
2. Мне удобнее решать такие вопросы на фронте. Если вам удобнее делать всё то же самое в PHP - тогда да, выходит, что особого смысла нет.

Худший ответ:
Ну по существу, да. Шаблонизатор стоит использовать, когда много шаблонов и в них есть повторяющиеся части. Мое личное мнение, синтаксически Pug лучше, чем Slim \ Smarty, но хуже, чем Blade, которым я восхищен.
Даже при разработке фронта стоит использовать шаблоны. Исходники будут чище, а скорость разработки увеличится. А вот шаблоны, которые компилируются в реал-тайме, я бы использовать не стал, предкомпиляция наше все.
Вопрос: Скорость i2c для ЖК экрана?

Лучший ответ:
Скорость i2c должна быть как минимум в 8 раз выше, чем скорость параллельного интерфейса.
Atmega может дрыгать пинами на частоте 8 Mhz при кварце 16 Mhz. Остальные тормоза вам создает программная реализация с кучей абстракций. Хотите драйва - переписывайте все на C, без абстракций и с кучками на асм. 
Или меняйте контроллер на ARM.

Худший ответ:
ИМХО можно выкинуть и2ц модуль и воткнуть пару сдвиговых регистров, которыми дрыгать через SPI (в случае если не надо читать что-то из памяти дисплея, что только при выводе символов на дисплей не особо-то и нужно, ардуина врядли будет молотить с такой скоростью, что надо будет состояние дисплея запрашивать).
Сам по себе аппаратный SPI будет гораздо меньше телодвижений делать чем I2C, что обеспечит некоторый прирост в скорости (по сравнению с I2C), но надо будет перевернуть все библиотеки и по сути создать новую.
И судя по даташиту на микруху неизвестно, как она отреагирует на превышение скорости тактирования, она в принципе похоже рассчитана на 100 кГц. С определенной частоты может просто начать неадекватно работать.
Вопрос: Как заблокировать программу Whatsapp и Facebook через Роутер Wi Fi?

Лучший ответ:
Сказать начальство, что эту задачу нужно делегировать сисадмину.

Худший ответ:
В локалхочтах заворот на 127.0.0.1 нежелательных ресурсах
Вопрос: Есть ли разница на что вешать обработчик для отправки формы — на саму форму: on submit или на кнопку отправки: on click?

Лучший ответ:
Лучше вешать на форму (атрибут onsubmit), потому что форма отправляется не только кликом по кнопке, а и, к примеру, нажатием Enter при установленном фокусе в INPUT[type="text"].

Худший ответ:
Кесареву - Кесарево, Нойзу - Нойзово, Чету – Четово.©
Если вам нужно засабмитить форму - то на сабмит.
Зачем плодить ненужный код?
Вопрос: Как заблокировать выполнение функции при передаче ее в качестве параметра?

Лучший ответ:
Сейчас у вас передаётся не функция, а результат её вызова:hideContent( showContent( elements_id[position] ));
Вот так можно передать саму функцию, но без параметров:hideContent( showContent );
«Привязать» к функции контекст и параметры можно  через bind():showContent.bind( null, elements_id[position])
Это создаст копию функции, к которой уже привязан null в качестве контекст this и elements_id[position] в качестве первого параметра. Можно было бы назначить  эту функцию переменной: var myFunc = showContent.bind( null, elements_id[position]);
и потом передать эту переменную для выполнения в качестве callback.
Передать функцию с параметрами в качестве параметра:hideContent( showContent.bind( null, elements_id[position] ));

Худший ответ:
Скобки уберите в вызове функции showContent, данные передайте вторым параметром и уже внутри hideContent вызывайте, передавая данные аргументом
Вопрос: Анимировать svg картинку на js, что лучше для этого подходит?

Лучший ответ:
1. CSS анимации, которые упомянули выше, стоит использовать осторожно - IE имеет проблемы с интеграцией их и SVG. Такой вариант не всегда подойдет.
2. SMIL... Процитирую MDN: "Chrome 45 deprecated SMIL in favor of CSS animations and Web animations". Пока все работает. Что будет дальше - кто его знает.
3. На VanillaJS делать хитрые анимации с SVG достаточно сложно. Вариант с генерацией CSS анимации из JS имеет те же проблемы, что и использование CSS анимаций в чистом виде.
4. Почему-то у нас народ любит хвалить GSAP. Но есть и другие инструменты, например Anime.js - меньше пафоса, свою задачу решает. Я бы отдал предпочтение второму варианту, но тут уж на вкус и цвет...

Худший ответ:
1.  Одним лишь css можно анимировать svg пример, codepen пример
2.  smil анимация пример
3.  обычный jacascript/jquery  codepen пример
4.   плагин использовать codepen пример 1, codepen пример 2, codepen пример 3, codepen пример 4
Вопрос: "Тест на способность стать программистом" версия Джоэля Спольски. Что думаете?

Лучший ответ:
Начинать с СИКП — ну такое. 
Сначала нужно привить интерес к разработке. Или понять, что он уже есть в человеке. 
И если человеку действительно станет интересно этим заниматься — он сам найдет и прочитает все, до чего сможет дотянуться.

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

Именно поэтому новичкам так тяжело втянуться. Потому что их обучают как сделать шаблонную вещь, но не обьясняют почему все так как оно есть. Соответственно, человек не учится решать проблемы, а учится применять решения. В результате очень скудная аналитическая база и реактивное знание. 

Cи - надо сказать, не самый удобный для повседневных задач язык программирования. Просто он один из "старых". Он создавался когда IT ландшафт выглядел совсем иначе. Никакими вебами 2.0 тогда и в помине не пахло. Был распространен Юникс. И Java я бы тоже не советовал для обучения, там много неочевидных вещей для неподготовленного ума. Т.е для решения прикладных задач он хорош, но для обучения - нет. 

Можете сразу начать изучать JavaScript, который собственно является основным языом программирования применяемым в веб-приложениях. Вас ведь как я понял ведь "веб" привлекает? Чем удобно изучать JS - браузер предоставляет вам готовую платформу для создания графической оболочки приложения. Стыковка действий в графической оболочке на HTML/CSS и функций в скрипте реализована очень интуитивно. Могу порекомендовать "Самоучитель JavaScript" Марины Дмитриевой - книжка старая, но очень правильная. С задачами и решениями которых в современных "учебниках" не найдешь. 

Однако LOGO (как упоминалось выше) я тоже могу порекомендовать для изучения азов. Вот одна из его современных инкарнаций - https://ccl.northwestern.edu/netlogo/. Там даже веб-редактор есть. Куча примеров из коробки. Сразу есть контекст применения - агентное моделирование. 
Чем хорош LOGO - его синтаксис на мой взгляд хорошо демонстрирует и прививает процедурный подход. 
Например, последовательность команд или говоря иначе процедура отмечается блоком to <что-сделать> 
... 
endВ блоке поочередно указываются все процедуры которые необходимо вызвать для выполнения <что-сделать>.  

А вообще, заходишь сюда https://repl.it/languages/  и сюда https://www.tutorialspoint.com/tutorialslibrary.htm 
выбираешь любой язык из туториала и пробуешь. Сравниваешь.