Pull to refresh
134
0
Ольга @Serine

Сею хайлоад, бигдату и хаос

Send message

Действительно, есть такой неприятный риск. Но хочу накинуть несколько возражений:

  • Если человек хорошо разобрался в свежих стандартах языка, то он сможет разобраться и в старых. Для него это будет подмножеством уже знакомого языка.

  • Мы обещали мотивированность подачи. Это означает, что к необходимости каких-то фичей мы будем подходить издалека: откуда растут ноги у фичи, как жили ДО нее. То есть студенты курса будут знакомы и с кусочками более старых стандартов.

  • Сейчас конец 2024 года. Пока мы доделаем курс, пока студент его пройдет... С++23 уже не будет восприниматься таким супер-свежим.

  • Да, многие компании в 2024 году сидят на С++11. А многие - раз в три-четыре года переходят на новый стандарт. Кто-то - быстро, кто-то - с лагом. Но тут мы возвращаемся к моему предыдущему поинту.

Мы любим картинки. В курсе по питону мы ими немного пренебрегли, но в курсе по C++ развернемся на полную.

Расскажи, пожалуйста, что в том курсе было сделано неудачно? Мы коллекционируем грабли (и чужие, и свои), чтобы на них не наступать.

особой разницы не будет.

Предположу, что вам так кажется, потому что вы привыкли к C++. А с точки зрения разработчика, который впервые видит C++, разница колоссальная.

C++23:

import std;

int main() {
    std::println("Hello World");
}

Код выглядит простым, не вызывает никакого недоумения.

C++17:

#include <iostream>

int main() {
    std::cout << "Hello World" << std::endl;
}

Что за #? Почему одна строка закончилась точкой с запятой, а другая - нет? У треугольных скобочек в строке 1 и строке 4 разная семантическая нагрузка? Код выглядит не единообразно. И тут у автора обучающего материала два пути:

  1. Уважаемый читатель, тебе сейчас ничего не понятно, но ты расслабься. Прими эти странные конструкции как данность, и на протяжении десятков глав ты разберешься, что здесь к чему. Мне этот подход не нравится, потому что тебя призывают перестать задавать вопросы. Что при изучении чего-то нового - так себе подход.

  2. Соберись, тряпка. И слушай: сверху - макрос. Cout - это объект-синглтон. Endl - это функция. А треугольные скобочки, ох уж эти треугольные скобочки.. И этот подход мне тоже не нравится. На читателя вываливается тонна информации, которая ему на данном этапе не нужна.

Поэтому если есть такая возможность, то лучше знакомиться с C++ с последних стандартов. А потом - да, при необходимости или при желании заныривать глубже и глубже.

Нельзя недооценивать человеческий фактор. Какой процент читателей книги честно выполнит все задачи? А как проверить, что задача решена правильно и не падает на хитрых кейсах?

Во-вторых, зачем начинать погружение в язык с заведомо старых версий? Стандарт C++23 уже принят. Большинство его фичей поддержано вендорами компиляторов. Да, формально C++17 - это Modern C++. Но объективно - это пред-предыдущая версия языка. Даже код на C++17 и C++20 уже может разительно отличаться.

Да, можно взять нетбинс и книжку. Можно взять вим, плагины к вим и видеолекции. Из точки А ("я не умею в C++") можно разными способами добраться до точки Б ("теперь умею"). Вопрос в том, сколько времени и энергии потратится для получения одного и того же результата. Зачем идти пешком, если можно долететь на самолете? Это и есть вопрос эффективности. Если можно выстроить обучение так, чтобы было и удобно, и полезно, то почему бы этим не воспользоваться.

Арррр!!! Денис Шевченко дал добро на адаптацию под формат курсов его офигительнейшей книги "О Haskell по-человечески". Так что курсу быть!

Если есть на примете знакомые функциональщики, готовые ревьюить главы и давать ценные советы, зови их сюда:

https://github.com/senjun-team/senjun-courses/issues/69

Подумаем, как интересно рассказать об этом в посте)

Спасибо, что предупредили! Да, перед реализацией обязательно выясним, что и как.

На данный момент готовы первые три главы. Как только накопим 5 глав, сразу их опубликуем и сделаем анонс. Следующие главы будут выходить постепенно по мере написания.

Спасибо за интерес к проекту! А у вас какой сервис? Очень любопытно посмотреть, кидайте ссылку. Вдруг еще кому будет полезен (считаю, таких площадок много не бывает).

Перед ответом сразу дисклеймер: да, мы стараемся обезопасить запуск кода. Но абсолютно точно мы не учли всех вариантов. Потихоньку будем латать дыры.

Отвечаю по пунктам.

Как мы контролиурем запускаемый код по ресурсам? Вызываем компиляцию, запуск и тесты не напрямую, а обернутыми в линуксовый таймаут. Типа такого: timeout 10s python ${file}_tests Ограничение по оперативке задается на старте контейнера.

Какие используем образы? Пока у нас получается так: 1 курс = 1 образ. Питон: python:3.12.0-slim, раст: rust:1.73.0-slim-buster, го: golang:1.21.6-bookworm.

Сразу ли чистим контейнеры? Контейнер мы чистим перед запуском пользовательского кода. Это сводится к удалению файлов в home директории.

Как обрабатываем необходимость работы с фс из кода задач? Код пользователя запускается из-под учетки с ограниченными правами. Она может писать только в свою home директорию. Которая чистится перед каждым новым запуском. Теоретически конечно за 10 секунд (до того, как сработает таймаут) ее можно очень хорошо завалить файлами. Чтобы процесс очистки потом выполнялся долго. Или чтобы иноды закончились. Но как бороться с этим, мы пока не придумали.

Боремся ли как-то с возможными угрозами в коде? Можно ведь выйти за границы контейнерной изоляции и запустить что-то в ядре хоста. Да, мы понимаем такой риск. Но пока не придумали, как полностью от него обезопаситься. Может, вы что-нибудь посоветуете?

Если у кого-нибудь есть соображения по дополнительному обезопашиванию контейнеров, будем благодарны.

Спасибо! В ближайшее время пофиксим

Спасибо) Будем ждать критику и предложения!

Да, мы очень хотим сделать курс по C++. А скорее даже два, три или более логически связанных курса. Такой язык как C++ не запихнуть в средних размеров обучающую программу. Скоро начнем искать авторов)

Спасибо! Тегнем вас, как только появтся курс по яве.

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

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

Мы хотим опубликовать как можно больше качественных курсов. Для этого нужно искать хороших авторов. Если удастся сделать это для Java - то конечно будет и Java. Если у вас есть такие авторы на примете, обязательно дайте знать)

Спасибо за багрепорт=) Постараемся это поправить. Видимо, хром находит первую картинку на странице и делает ее иконкой закладки. А первым jpg идет фотка автора курса. До этого есть лого сайта, но оно в виде тега <object>.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity