Я программист со стажем более 20 лет и я работаю учителем информатики в школе. Правда, в частной школе — не побоюсь сказать, полностью лишённой всех тех недостатков, какие Вы описываете :) Поэтому могу сказать: плохих школ много, но хорошие тоже есть и даже сравнительно недорого. И кстати, я только что написал для школьников учебный язык программирования. Если найдёте время ознакомиться, мне был бы очень интересен Ваш отзыв! (А если сочтёте достойным и прорекламируете, буду весьма признателен).
Сам язык похож на русифицированный Паскаль. Мнения о новом языке у меня нет, так как я на нём ничего не писал, однако издали Клаус выглядит вполне прилично, при этом кириллица моё сердце патриота особо радует.
- Строгая типизация; - Полная поддержка UTF-8 на уровне языка; - 7 простых типов данных: символ, строка, целое и дробное число, момент (дата/время), логическое, объект (handle); - Составные типы: многомерные динамические массивы, словари и структуры с возможностью комбинирования произвольным образом; - Условное ветвление и многовариантный выбор; - Циклы по счётчику, «для каждого», по предусловию и постусловию, инструкции управления циклами; - Процедуры и функции с входными, выходными и проходными параметрами; - Локальные процедуры и функции неограниченного уровня вложенности; - Рекурсия, предварительное определение процедур и функций; - Всплывающие исключения с параметрами, средства обработки исключений; - Возможность выполнения программ в терминале с аргументами командной строки, перенаправлением потоков и конвейризацией; - Функции управления терминалом: цветной вывод, канонический и сквозной режим ввода, обработка нажатий клавиш; - Редактор кода с подсветкой синтаксиса, пошаговый отладчик с точками останова, просмотром стека вызовов и значений переменных в каждом фрейме стека; - Версии для Linux и Windows x64.
Перечислимых типов и множеств, модульности, графической библиотеки пока нет. Но мы над этим работаем! :)
Авторы — профессионалы со стажем свыше 20 лет в сфере промышленной разработки программного обеспечения и более 10 лет в сфере педагогики. Язык Клаус специально разработан нами как учебное пособие для школьников — это полноценный структурный язык программирования, написанный полностью по-русски и с большим вниманием к тому, чтобы исходные тексты программ выглядели «по-человечески».
Почему по-русски?
Потому, что так понятнее. Работая на родном языке, мы можем с первых занятий сфокусироваться на изучении базовых принципов и формировании хороших привычек, не отвлекаясь на плохо знакомые слова. Даже те из учеников, кто хорошо знает английский, свой родной язык всё равно понимают намного лучше — и это крайне важно в начале обучения. В конце концов, зубрёжки детям и без нас хватает!
А если по-русски тогда почему “Клаус”? Разве это по-русски
Это по-немецки. Впрочем, англоязычная Википедия утверждает, что это славянское имя, производное от греческого. Потому, что так звали человека, который внёс огромный вклад в развитие компьютерных наук — и, да, мы хотим назвать наш язык в честь этого человека. Доброго пути, Никлаус. Спасибо тебе!
Зачем вообще учить программировать тех, кто плохо знает английский?
Способности к языкам и способности к программированию — это разные таланты. Поставив учеников перед необходимостью осваивать одновременно два языка — и человеческий, и компьютерный, — мы рискуем потерять тех, кто мог бы стать хорошим инженером. Лучше дать возможность сначала заинтересоваться предметом и понять суть, а лишь затем осваивать все те дополнительные навыки, что понадобятся в реальной работе.
Зачем изучать язык, который в дальнейшем не будет использоваться?
В профессиональной работе используются многие десятки языков и тысячи библиотек функций. Умение быстро освоить новую среду разработки — обязательное требование к любому профессионалу. Именно поэтому мы сделали Клаус — он хорошо спроектирован, лёгок в освоении, и это создаёт первое, самое важное впечатление: программировать — это просто! А дальше — все современные императивные языки похожи, как близнецы: зная один, легко можно выучить ещё десяток других. Кроме того, общеизвестно, что технологии разработки, платформы, стандарты, методики — всё это меняется до неузнаваемости каждые 5-10 лет. А стало быть, надеяться научить современных школьников языку, который они будут использовать во взрослой работе — ложная идея. Научить их мыслить и постоянно учиться — вот правильный подход.
Но английский всё равно необходим любому профессиональному программисту!
Разумеется. Врачи до сих пор учат латынь, хотя со времён падения Рима прошло полторы тысячи лет. Однако, средняя школа — это слишком рано для профориентации. Наверное, не все наши выпускники станут профессионалами в ИТ — и тем не менее, им придётся жить и работать в мире, где понимание принципов программирования необходимо для любого специалиста, чем бы он ни занимался. К тому же, чем раньше дети поймут, что программировать — это просто, тем вероятнее они выберут ИТ в качестве профессии.
Но язык программирования — это не синтаксис, а в первую очередь инфраструктура!
Верно. Профессиональный язык программирования — это огромная экосистема: большая среда разработки с массой возможностей, богатая стандартная библиотека, сто тыщ дополнительных библиотек от разных авторов, и прочая, и прочая. Мы считаем, что на начальном этапе обучения такое обилие возможностей не полезно, но очень вредно. Среда для маленького программиста должна быть настоящей, но маленькой. Возможностей должно быть ровно столько, сколько ученики смогут освоить в ближайшие год-два, не больше. Обилие возможностей порождает растерянность, а нам нужно понимание.
>>3055929 (OP) Очередное говно для школ с функционалом даже хуче чем у Си. Ну серьёзно, даже у паскаля абц.нет больше перспектив чем у этого кала. И сука begin endы ну ёбаный в рот. Вообще выглядит так как будто чел прикрутил макросы в пасцаль, и просто так его русифицировал, блять это реально паскаль на русском, автор говна поел
>>3057134 Да, после Питона просто бесит. А в Си-синтаксисе еще и ненужные скобки в if, while и др. Это какой-то массовый стокгольмский синдром у крестовиков, так испортили неплохие в целом Zig и Rust. Откуда всратый синтаксис у Вирта и его поклонников - непонятно, они вроде на C/C++ никогда не писали, а в BASIC и Fortran такого не было.
Нормальный синтаксис в Python, Ruby, Crystal, Nim, Golang, Swift. Язык программирования в первую очередь должен быть понятным для людей, а не для роботов и инструментов IDE.
>>3058706 >быть понятным для людей, а не для роботов и инструментов IDE Угу. Только как раз в твоем любимом пайтоне, без IDE исходники превращаются в тыкву и работать с ними невозможно.
>>3055953 > Но язык программирования — это не синтаксис, а в первую очередь инфраструктура! > Верно. Верно. И поэтому мне лично вдвойне непонятно, зачем школьников упорно учат буквенным языкам, когда учить надо программистскому мышлению, для чего прекрасно подходят блок-схемы (известные сегодня, как ноды или блоки) у них и принцип построения как раз получается независим от языка - хоть IF пиши, хоть ЕСЛИ, хоть иероглифами, но ученик в первую очередь запомнит принцип условия выраженный через специальную форму ноды-условия. И он запомнит её суть - ветвление на две линии выполнения дальнейшей логики в зависимости от выражения в ноде.
И так по всем пунктам. Объекты и атрибуты, например, со всеми методами и членами - превращаются в компоновку блок-схемы внутри одного внешнего блока. Что легко и наглядно понять ребенку/подростку.
И я повторяю вопрос. Зачем они продолжают выдумывать буквенные языки с кринжовыми операторами на национальных символах?
Почему мы просто не можем вернуться к основам и начать писать на https://neolurk.org/wiki/%D0%92%2B%2B Предки уже буквально все передумали. А нас всех просто промыли ящеры.
>>3062791 А ещё блок-схемы хороши тем, что для них пекарня не нужна. Можно учить детей информатике даже в нищих африканских школах. И дебажится нарисованный в тетрадке блок-код легче текстового. Главное, чтобы ученик не намалевал лапши.
>>3062791 Я срать ебал ваши блок-схемы потому, что:
1) Заебёшься отлаживать; 2) Один хер внутри этих квадратиков текст, который (внезапно) надо писать; 3) Из 2) заёб переключаться между текстовым и графическим представлениями, бесит, блять; 4) Заёб при версионировании т.н. "исходников", т.к. добавляется куча ненужного мусора в виде оформления этих ваших ебаных квадратиков в XML; 5) Любая относительно большая программа на квадратиках превращается в ёбаное месиво макарон; 6) Вы, блять, всё равно приходите ко мне, чтоб я напейсал кишки этих квадратиков текстом.
>>3064342 А в дальнейшем нюфани, обученные на квадратиках, встрянут в продакшон. В котором -- сурприз!!! -- квадратиков не окажется. И придётся переучиваться не просто с нуля, а с уже зашитых принципов. Короче -- яебал квадратики ваши тупые.
>>3064356 Не вижу ни одного преимущества у квадратиков перед текстом. Разве что заинтересовать малолетних долбоёбов разноцветной картинкой, ведь текст -- эта скушнааааааа, многабукав, КГ/АМ, и прочие мантры дебилов с клиповым мышлением.
>>3064448 Я про переключение восприятия. Вот сейчас мне надо проводочками квадратики соединять, а потом ставить бряки в текстовых кишках этих квадратиков. Вот этот калейдоскоп текст-квадратики-текст-... бесит.
>>3066835 Так можно же. Просто минимизация платформы, для того чтобы она не была настолько тяжелой это сложная задача. А так ставь 1c и пиши что хочешь.
>>3066909 Разделение "равно" и "присвоить" упрощает читаемость. Использование := для присвоить и = для равно — аналогично. В тех же плюсах не редкая ошибка у совсем новичков if(x = y){ }.
>>3067343 А еще позволяет писать легко читаемые конструкции с итераторами возвращающими false при окончании коллекции while(item = getNextInem()){} и кроме сей это работает в шарпах, дажве, js. Не работает в пайтоне и го. Что-то современные инструменты энтерпрайз разработки не очень согласны с тем что это "косяк".
>>3067486 Это не работает в шарпе и джаве, они принимают только bool в if. Это работает в js, который второй худший язык, так что гордиться особо нечем.
>>3067486 Алсо, если у тебя последовательность с getNextItem из чисел, и там есть 0, то цикл на этом закончится. В js это ещё может быть пустая строка.
Именно поэтому это и косяк - казалось бы стандартный приём внезапно может работать совсем не так, как ты хочешь.
>>3067584 Но в них это работает на bool условиях. То есть var a = false; var b = true; if(a = b){ Console.Writeline("succes"); } То есть эта хуйня там будет выглядеть подругому. Типо while((item = getNextInem()) == null){} главное что = это функция двух переменных возвращающая значение, а не просто void, или его аналог.
>>3067586 Поэтому и добавляют дополнительные проверки, или останавливают по условному ^0. Тут больше о возможности это делать, и о том что это путает новичков.
>>3067101 России нужна своя независимая платформа, чтобы не быть в анальном рабстве у Microsoft или Oracle. Которые уже ввели некоторые санкции. Не может быть никакого импортозамещения, пока в самой главной сфере - энтерпрайзе - мы зависим от западных корпораций. Захочет барин, и система МИР со всеми банковскими сервисами просто в один день перестанет работать. И здесь 1C выглядит наиболее зрелым продуктом, который нужно лишь доработать. Насколько знаю, там уже можно частично делать веб-сервисы на SOAP, возможна работа на Linux и использование БД Postgres.
>>3067104 Идея фикс дедушки Вирта, в честь которого назван сабж. У него = означает равенство (типа как в математике, где запись x=x+1 не имеет смысла), а := присваивание.
>>3067486 Это уродливый сишный костыль. В жабе и шарпе для подобного принято использовать генераторы на Stream API/LINQ.
Внутри выражения присваиваниям, инкрементам и прочим побочным эффектам не хер делать, это UB хаки красноглазых гиков, которым не место в промышленном коде.
>>3067695 >Это уродливый сишный костыль. В жабе и шарпе для подобного принято использовать генераторы на Stream API/LINQ. Да даже foreach в шарпе уже избавляет от этой хуйни. Сахарок затем и нужен, чтобы уродливые конструкции прятать.
>>3067718 > Сахарок затем и нужен, чтобы уродливые конструкции прятать. В шарпе помимо сахара ещё и мёду наливают. Я недавно линк-синтаксис освоил и вообще жопа чуть не слиплась. Охуенно же: > from item in collection where item.foo == bar select new item2 { baz = item.foo }
А на самом деле обидно: ещё тридцать лет назад в этой стране делали прорывные технологии, например, тернарные компьютеры или VLIW процессоры, а сейчас можем только рескинчик паскаля продать под видом отечественного языка для школ с расчётом на крошки от госконтракта.
> Так влив эльбрусы всё ещё делают, они просто нахуй не нужны.
Да, но важен сам факт что такая хуйня создалась и использовалась.
> Тернарная логика тоже очень нишевая, это примерно уровень аналоговых ЭВМ.
Да, тернарный компьютер был скорее экспериментом.
Мой поинт не в том, что всё это были крутые рыночные вещи, а в том, что когда-то были реальные попытки создавать прорывные технологии, а не рескины языков на русский язык
>>3055929 (OP) Тоже попробовал свои силы, сделал язык для начинающих, называется Толстой. Потому что каждый на словах - Лев Толстой. Сам язык похож на русифицированную джаву, причем как брат-патриот я тоже радуюсь кириллице
>>3068826 > В чем разница между сообщить и вывести? Автор пока токенизировал токены для ЛЛВМ, забыл, как у него токен метода вывода называется, и что он уже реализован, и ебанул с подливой под себя вторую реализацию.
>>3055929 (OP) >при этом кириллица моё сердце патриота особо радует Если программист не будет знать английского, он не сможет и удрать за границу! Поэтому надо оставить только русские языки программирования, даже ассемблер сделать русским, переписать на это ядро Линукса, а все западные технологии запретить. Только Клаус, Эльбрус и Чебурнет.
>>3072083 Думай многоходово Если знает русский, то все еще сможет удрать в Израиль или Брайтон Бич Поэтому ЯП надо делать на украинском, такой вот цап царап.
>>3055929 (OP) Доблестный русский народ сначала должен придумать как прозрачно переключать раскладку без пердолинга и костылей, а уж потом мешать в код кириллицу с латиницей.
>>3072083 На Эльбрусах ассемблер был на кириллице из русских слов. Это было такое чтиво, что блнвать хотелось. Забавно что систему команд МЦСТ оставил прежнюю (основу), но названия команд и мнемоники перевели на латиницу.
Кстати, ассемблер на русском я могу сделать. Где-то к первому апреля. Но не хочу - опасаюсь что найдутся те, кто решит его использовать.
>>3064318 Ну блин. В том же анриле удобно как все. Чтоб сделать функцию надо тыкнуть плюсик, назвать, добавить на кнопочках инпуты и аутпуты. Типы переменных добавляются из красивого списка, часто используемые в два тыка, у классов придется имя набрать чтоб найти, но там поиск хороший и еще лучше если ты под себя имена придумываешь.
А чтоб текстом сделать надо набрать тип ручками, потом имя, потом каждый инпут, если есть аутпуты то каждый раз их писать. Мясо внутри точно таким же способом писать.
Лапша на нодах получается только если как дурак не соблюдать принципы программирования и не пользоваться инструментами компоновки нод, коих там полно, один графический коммент в анриле круче гринтекста дебильного.
>>3072083 Это как русские рельсы отличаются от европейских чтоб их не могли использовать. Так и мозг русского должен отличаться настолько чтоб он не смог освоится нигде больше. Поглядите на этих бабок и дедок у банкоматов, обученные лучшим советским образованием не могут выбрать из трех кнопок, которые придумывал специальный умник для глупого юзера. Языки в школках сколько учат а с носителем никто поговорить не может. Про историю вообще молчу.
И вот пока россиянское государство было слабо на земле русской народились мозговитые проггеры и ухх как раздражают правителей и начальников. На чудесное предложение поработать за 30 тыщ покупают билет в один конец на эту сумму. Бессоветсные ублюдки не хотят строить кибергулаг. Вот и занялись. К счастью их аппарат сильно деградировал.
>>3079364 Вообще в языке программирования важны символы больше чем слова. Например, мало кто с наскоку догадается, что такое await и как им пользоваться, а вот скобки {} сразу понятны - написанное в скобках делается в первую очередь. Универсальный язык, ёпта! Вот как нужно подходить к идеальному языку. Вообще не использовать слова. Только отдельные символы, максимум два. Из слов в таком идеальном языке пусть только переменные и прочие именованные литералы.
>>3079558 Да, кстати, лисп и вообще фукциональные языки предлагают противополодную парадигму "всё есть функция, любое значение - возвращаемо из некоторой функции" таким образом наоборот, не получится объявить ключевые слова символами, потому что нет их, слов ключевых, есть только функции, а функции объявлять символами как-то... хотя...
>>3055929 (OP) Пиздец, высер человека, которому паскаль сформировал восприятие мира. Просто тошно, что кто-то всерьез считает использование этого для обучения хорошей идеей.
А хостинг, хостинг то какой. Вся это хуйня - символ времени. Бесполезно, никчёмно, жалко. Не удивлюсь, если автору ещё и грамоту подарят, за вклад в отечественное АйТи
>>3080798 >Это совершенно нечитаемо. >Уровень математических формулировок, где надо посимвольно выражение разбирать Так это читаемее, чем "якобы человеческий язык, но кривой"
>>3055929 (OP) > Сам язык похож на русифицированный Паскаль. въебал бы кирпичом, учитель хуев 2024 год, они все надрачивают на ебучий паскаль, просто охуеть. то ли дело православный РЕФАЛ
>>3081535 Функциональные языки - это не то, с чего следует начинать изучать информатику, ИМХО. Императивный язык наиболее близок человеческому мышлению: 1. Возьми. 2. Поверни. 3. Положи. 4. ПРОФИТ!
>>3080767 >Почему щас так не делают? Делают же. BQN или там Uiua. Но всё равно я считаю что array programming - это узкие предметно-ориентированные языки, типа скуля, регулярочек или функциональщины.
>>3081819 Я немного о другом толкую. Даже по ссылке ОПа преподы в комментах обсуждают, что вот этот вот клаус у них как переходное звено между скретчем(!) и настоящими языками.
А я выше написал, что от скретча в целом можно сразу на настоящие языки переходить. У скретча есть более развитый аналог, от другого института, Snap! (бывший BYOB) и там можно прямо таки полноценные программные абстракции реализовывать. Стыдно признаться, но я, стареющий скуф, перечитал гору литературы по замыканиям, но никак не мог осилить, и именно ковыряние в Snap! на досуге внезапно мне помогло осознать, как это работает.
После этого я хоть и на субъективном примере, но убедился и настаиваю, что лучший метод для обучения найден - интерактивные стыкующиеся блок-схемы. И они по своей природе безъязыковые. Ключевыми конструкциями являются блоки, а не слова. Имена вписываемые в блоки ты можешь делать на любом языке и среда исполнения не требует внутренних самоизменений.
И поэтому я настаиваю, что пилить какие-либо символьные языки - это контрпродуктивно.
>>3082431 > этот язык составляли конченые добаебы Между прочим, долбоёбы со стажем в 20 лет)) вообрази себе глубину манямирка.
И ещё блять, очень важно в языке для обучения школьников непременно заложить обработку исключений. А то ж школьники не поймут нихуя.
Я тут ОП-скрин на блочный код перевёл (вышеназванный беркли снэп). Смотрите, насколько школьнее получается! И это всё можно мышкой таскать по экрану. Школьники будут довольны - вместо скучной учобы сидишь конструктор собираешь. И выполняется всё в браузере. Для организации уроков не надо ничего конпелировать.
>>3082841 > первый пик какой же пиздец нахуй это типа "упрощенное" обучение программированию? ояебу, хорошо что в моем детстве такой хуйни не было и я сразу учился на няшной сишке писать.
>>3082856 Мне тоже оно пиздецом кажется, но это потому что мы с тобой няшную сишечку уже знаем. А ты представь что не знаешь. Идея именно в том, что школьник может все эти блоки перемещать, а не печатать кучу текста.
>>3072660 Я делал Форт на русском, но потом надоело и забросил. Язык малоизвестен, борщехлебы котируют Лисп с Хаскелем, байтоебы признают только C++ и ассемблер. А жаль, идея годная, на нем можно создавать конструкции любой сложности. Пытался создать ОС и веб-сервер полностью на Форте.
>>3082867 >А ты представь что не знаешь. Идея именно в том, что школьник может все эти блоки перемещать, а не печатать кучу текста. мне не надо ничего представлять, вот скриншот где мой семилетний сын пишет скрипты на жс в кодкомбате. и да, я ничему из кодинга детей не учу. просто открыл ему кодкомбат и сказал разбирайся сам. через три дня заглянул и немножко охуел - у него там уже и циклы были, и условия, и переменные. если для тебя это откровение, то школота пишет код сейчас с первого класса, в майнкрафте, в роблоксе еще в какой-то залупе которую я как старпер уже не понимаю и учится этому походя.
> Просто подумай об этом, не бухти. вся эта скретчевая порнография - зло, которому нет никакого логического оправдания. это выглядит так, что скуфидоны, которым 40 лет назад ебали голову бейсиком и паскалем, решили обучить программированию на этом самом бейсике клинических идиотов, которые не умеют на клавиатуре текст набирать. хотя зло - это слишком громко, просто кринжатина уровня рисования интерфейса ворда мелом на доске.
>>3085676 хотя конечно алгоритмические курсы уже устарели, будущее за пикрелейтедами, пока ебанашки пытаются учить детей паскалю, сами дети тем временем учатся как настроить и обучить нейросеть чтобы она ему этот паскальный код генерировала
>>3084780>>3085676 На пиках литералли Черепашка Лого. Только вместо ВПЕРЁД 100; НАЛЕВО 90 они копипастят странные заклинания с точкой, суть которых до них вряд ли доносят. Лого - это допаскалевский уровень. Максимально конкретные действия из реального мира и ноль забот о вводе/выводе/рантайме. Лого - это мастхэв, конечно.
>>3085815 ну это черепашка только на самых-самых первых стадиях. курс кодкомбата ведет к тому, что игрок, например, создает полностью автоматический алгоритм для действий персонажа, который на арене,взаимодействуя с другими дружественными персонажами, бьется против такой же команды. вот тут видосики можешь посмотреть - codecombat.com/league
код финалистов это, понятное дело, считай что олимпиадники мирового уровня, но даже если школоло дошло до финала и смогло написать что-то, что смогло не просто пукнуть и умереть - то 20 лет назад это был бы, без преувеличения, уровень курсача на первых курсах вуза.
поэтому когда я вижу попытки учить современных школьников программированию на скетчапе, то это ничего кроме приступа испанского стыда не вызывает
>>3086003 Ты как-то снова начал смешивать понятие "школьник который начал изучать программирование" и "школьник который дошёл до арены". Какой путь из черепашек, скретча и паскаля ему перед этой ареной пришлось пройти - осталось за скобками. Геймификация в кодкомбат и подобных хорошо решает проблему мотивации, но понимание программирования они ничуть не облегчают.
>>3055929 (OP) >Я программист со стажем более 20 лет и я работаю учителем информатики в школе. Крайне хуйово ты работал программистом, что пришлось перед пенсой идти преподавать в шкалку сранную. Вообще самые потраченные люди это педагоги. Которые нихуя не добились и пошли учить других как нихуя не добиваться. Даже в частных институтах набирают таких.
>>3086043 Я от себя замечу, что этот уёбок выше, путает все поняти подряд, он не видит разницы между скретчем и скетч-апом(!), поэтому я даже не пытаюсь ему объяснять, что снэп, о котором речь шла ранее, намного превосходит скретч. Хули что-то обяснять идиоту. Просто шлите его нахуй, аноны.
Ну паскаль это конечно стыд и срам, но текстами автора я немного вдохновился. Идея - сделать протокол (условно Language Unification Protocol), который в роли компилятора вначале будет переводить код на условной кирилице/итальянщине, потом выдавать код оригинальному компилятору (или нет). Условно:
>>3092777 Другое немного потому что transpiler это имплементация, а протокол можно реализовывать на несколько языков разными способами. Но по сути да, это было бы семейство transpiler'ов с плюшками. Почему не сделали еще? Почему вместо этого у нас оп пост? Никому не надо совсем?
>>3092811 Там выше в треде упоминали ДРАКОН, российский блоксхемный графический язык роскосмоса. Загугли. Именно капсом, да. Вот он обладает такими функциями. Это чётко выверенный протокол. Он транспилируется на целевой язык программирования. То есть, ты в специальном редакторе рисуешь схему, и с неё тебе выводится готовый модуль, например, на си++.