LINUX.ORG.RU

Моя программа «Школьный день»

 , , , ,


0

3

Всем привет! Мне 14 лет, учусь в 7 классе. Для школьной научно-практической конференции по информатике решил разработать собственную программу «Школьный день».

Это независимый планировщик расписания уроков и домашних заданий, который не требует регистрации или подключения к электронному дневнику. Можно добавлять уроки, указывать время и кабинеты, записывать домашние задания и отмечать их выполнение. Я постарался сделать всё максимально простым, чтобы ручной ввод занимал минимум времени.

Программа написана на Rust с использованием GTK4 и libadwaita. Есть сборки для Linux и Windows (в будущем планируется на mac).

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

Исходный код опубликован на GitHub. Хотелось бы, чтобы программой могли пользоваться и другие школьники, а разработка продолжалась после конференции.

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

Если захотите попробовать программу, сообщить об ошибке или помочь с разработкой - буду рад.

Исходный код и установщики: https://github.com/sqeezy-53/school-day



Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

удалось исправить несколько недочётов и настроить автоматическую сборку Windows

Сильно! В Microsoft сборкой Windows занята целая команда специалистов. А наш отечественный школьник осилил все в соло, причем нужно ему это исключительно для того, чтобы заработала программа школьного расписания! Не оскудела земля наша рОдная талантами :)

Xintrea ★★★★★
()
Ответ на: комментарий от firkax

Ну вот с моей колокольни это выглядит как разговор с человеком, который отказывается пользоваться компиляторами.

Можно без компиляторов жить? Можно, но медленно и больно.

К компилятору как к инструменту отношение какое? Пусть он сам уже регистры аллоцирует, срать я на них хотел, дайте просто работающий бинарник. Ну реально, не заставляйте меня тратить время и силы на эту рутину.

Вот и с ЛЛМ ситуация такая же точно. Очень много ситуаций, когда тебе не нужно супер-качество (вылизанный вручную ассемблер), а нужно просто любым способом зарешать проблему, и двигаться дальше. Это всезнайка с охренительным кругозором, способный на основе этого кругозора очень быстро конструировать решения для самых разных проблем, а затем корректировать их в режиме диалога. Это экономит время и силы, точно так же, как их экономит компилятор.

Manhunt ★★★★★
()
Ответ на: комментарий от shahid

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

Высосано из двадцать первого пальца.

Я в институт поступал со свидетельством о рождении, потому что паспорт тогда давали только в 16. Ни в психушке, ни в «списке» себя не обнаруживаю.

Иногда встречаю одноклассника - он тоже айтишник. И он еще младше меня на пару месяцев - соответственно, оба пошли в школу с пяти.

Слышал про одноклассников, которые были старше: за прошедшие годы кто спился, кто православнулся по полной... Кора, видимо, совсем дифференцировалась.

Adamos ★★★
()
Ответ на: комментарий от Manhunt

Покапитаню немного…

Разница между использованием компилятора и вайбкодингом в том, что компилятор на конкретный код компилирует в строго детерминированный конкретный бинарник. Он может много всяких преобразований и оптимизаций делать under the hood (немалую часть из которых ещё и можно отключить, но это даже не так важно), но ты под этот самый hood можешь легко заглянуть — если, конечно, исходный код компилятора открыт. Это потребует некоторых усилий, но не просто выполнимо, но и доступно одному человеку с обычным человеческим мозгом — было бы желание. В случае с LLM нет ничего даже отдалённо похожего — на любой промпт он даёт тебе случайный ответ, который возможно будет соответствовать тому, что ты хочешь. Мало того, что результат этот будет каждый раз разный (можно, конечно, выкрутить температуру в ноль, но никто так не делает, и это контрпродуктивно), так ещё и, что важнее, ты понятия не имеешь, как из этого промпта получился этот код. И заиметь это самое понятие не можешь при всём желании. Обычно даже гипотетически — это тупо чёрный ящик. Но даже если это модель, которую ты сам тренировал, знаешь все веса и так далее, и чисто гипотетически ничто не мешает проследить через какие именно связи проходил сигнал, то эту возможность ты всё равно не реализуешь никогда просто технически — мозгов не хватит как-то это всё осознать. Не лично у тебя не хватит, не прими на свой счёт, а ни у кого из представителей нашего биологического вида не хватит, причём прям очень и очень далеко.

CrX ★★★★★
()
Ответ на: комментарий от CrX

ты понятия не имеешь, как из этого промпта получился этот код

Подожди, вот есть у меня в голове идея, написать такую-то программу. Я беру и пишу программу руками на С++. Получается файл с кодом. А как из этой идеи голова сгенерировала код? Вообще неизвестно. Никто не знает, как голова пишет код. При этом, код появляется и он работает. Возникает вопрос, а зачем, с точки зрения разработки программ как таковой, нужно именно понимать - ПОНИМАТЬ - как именно черный ящик, генерирующий код из идеи, работает? Если бы это было реально нужно, у программирования с рождения были бы большие проблемы, потому что работа головы это такой же черный ящик как и трансформер, только в миллионы раз чернее. Но тем не менее, головой программы пишут уже почти 100 лет. Чем это кардинально отличается от вайбкодинга?

Проблема то в другом - ну не надо никому, кроме ученых-теоретиков, понимать, как черный ящик генерирует код. Надо - проверять код, убеждаться что нагенерирована не чушь. Сейчас, это может делать эффективно человек-программист, специалист. А вайбкодер не может. Именно поэтому вайбкодер получает слоп. Но ничто не запрещает делать это достаточно большой, качественно обученной модели в ближайшем будущем, не хуже человека. Нет качественных препятствий, есть только количественные. Качество генерации вырастет, условно к 2030 году мы будем смеяться над этими проблемами, проблема слоп-кода вообще может перестать стоять. Будет код как в лучших домах Парижа и Филадельфии.

James_Holden ★★★★★
()
Ответ на: комментарий от CrX

Так ведь и было

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

amd_amd ★★★★★
()
Ответ на: комментарий от x905

таки не он пишет, а ИИ, в чем он и признался сразу

Вот не видел, где он признаётся в этом. Он написал только, что ИИ помогает ему в разработке.

На ответы ИИ похоже, но затрудняюсь представить, каким образом, он это делает.

@sqeezy-53, подтверди, пожалуйста, или опровергни, что сообщения в этот топик на форуме пишет человек, а не ИИ.

normann ★★★
()
Ответ на: комментарий от amd_amd

да со мной так и произошло

Разве ты математик? ;)

вот пройдет время и если ии станут не доступны - сможите ли сами программировать опять?

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

А из тех, кому приходится — ну кто-то сможет, кто-то нет, довольно очевидно. Вот тут как раз аналогия с компилятором или калькулятором уместна: вовсе не все из тех, кто кодин на ЯВУ, забыл ассемблер — многие прекрасно помнят и вовсю используют для дебага. Равно как и не все, кто пользуется калькулятором, разучились считать (не надо всех по себе судить — по-разному бывает). Зависит от человека, от того, что он вообще изначально знал, и от того, как он пользуется инструментом. Нейрокодить тоже можно по-разному: можно отдельные функции генерировать, потом внимательно читать и править самостоятельно результат, просто экономя время на ввод длинного кода, а можно целиком и полностью всё на откуп ИИ отдавать, даже не заглядывая в исходники. Естественно, при разных подходах, будет разная динамика с сохранением/развитием, или утерей навыка самостоятельного кодинга.

а что делать с теми кто и не умел, а только нейрослопил?

Да ничего не делать. Они просто менее компетентные «программисты» (наверное их когда-нибудь станут так называть, хотя мне сейчас это странным кажется). Точно так же, как и кодер на C, который может заглянуть в листинг дизассемблера и понять, что там ему выдал компилятор, и почему оно работает медленнее, чем по сишному коду казалось, или как оптимизировать, является более компетентным специалистом, нежели кодер на C, который ничего не понимает ни в ассемблере, ни в инструкциях процессора, ни в его регистрах и т. д.

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

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Я там описал лишь почему сравнение компилятора и LLM не является корректной аналогией в данном случае. Сравнение «своей головы», «чужой головы» и «вообще не настоящей, электронной „головы“» — это вопрос уже совсем отдельный. Тут разница тоже довольно большая, но она в другом:

  1. Своей голове человек всегда доверяет. По умолчанию и довольно безоговорочно. Возможно, напрасно — это тоже отдельный вопрос. Но по факту так происходит.
  2. Идея в голове, из которой затем возникает код, намного сложнее, чем промпт для LLM. Просто потому что идея — это не слова, а язык, тем более естественный, весьма ограничен. Объяснить словами какую-то достаточно сложную идею во всей её полноте бывает сложно. Причём хоть LLM’ке, хоть человеку. Это проблема не в уровне LLM, а в скудности естественных языков.
  3. Когда ты из идеи генерируешь код в своей голове, ты всё же имеешь больше возможностей, чтобы проследить, как оно происходит. Естественно, не на уровне отдельных нейронных связей и прочего — далеко не на нём. Но ты можешь последовательно проследить на уровне хотя бы каких-то абстракций, что вот из такой идеи развился такой-то концепт, здесь ты применил тот-то паттерн потому что здесь он оптимален по такой-то причине (или не оптимален здесь, а потому что ты его знаешь, или любишь, или тебе рефакторить потом проще), здесь ты использовал ту-то парадигму, а вот тут ты решил, что завтра тебе может понадобиться расширение API. Это довольно крупные высокоуровневые чанки, не спорю, но по крайней мере какой-то уровень интроспекции и следующей из неё понимания у тебя есть — это уже не совсем чёрный ящик, это ящик с очень-очень мутными стенками и туманом внутри ;)
CrX ★★★★★
()
Ответ на: комментарий от Manhunt

Вот тебе просто каноничный пример: у чувака классические тараканы в голове и забил он задание «сделай на ардуине то-то». И всё, никакая нейросеть тебе не напишет, что у ESP32 есть фреймворк ESP-IDF, а не эта бейсик-образная хрень, и будет она тебе фигачить код в ардурину, пока не начнёт токены миллионами выжирать, чтобы решить простую проблему.

steemandlinux ★★★★★
()
Ответ на: комментарий от CrX

Ну все пользуются естественными нейросетями, и как-то уживаются с тем, что внутри черепной коробки тоже мало что понятно. И обязательностью кожаные раздолбаи не блещут, с ними мало что детерминировано. И контекст там тоже ограниченный. Для организации работы с ИИ можно использовать ровно те же методы, которые используются для организации работы с людьми. Людям стараются давать небольшие задания, а результат выполнения каждого такого задания фиксировать (в частности потому, что он станет частью формулировки последующих заданий) и подвергать контролю качества. Для выполнения заданий могут быть предусмотрены определенные регламенты и рабочие процедуры, в том числе включающие использование формальных инструментов. Вот так человечество и живёт.

Так что не надо пугаться недетерминированности, это абсолютно не новая вещь, методы работы с ней давно разработаны и испытаны на практике.

Я ни в коем случае не утверждаю, что ИИ - это полный аналог компилятора. Я утверждаю, что отказ от использования ИИ - это луддизм, аналогичный отказу от использования компиляторов.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Ну все пользуются естественными нейросетями, и как-то уживаются с тем, что внутри черепной коробки тоже мало что понятно. И обязательностью кожаные раздолбаи не блещут, с ними мало что детерминировано.

Ну вот если бы ты сравнил вайбкодинг с делегированием программирования сотруднику-раздолбаю (или даже не раздолбаю), это была бы более адекватная аналогия. В ней тоже есть изъяны, но их меньше, и они другие.

Ты сравнил с компилятором, я объяснил, почему эта аналогия никуда не годится.

Если что, я не firkax, я не утверждал, что LLM надо срочно уничтожить, а всех, кто им пользовался — на всяких случай расстрелять, или хотя бы оградить от общества (слегка утрирую, а не клевещу).

Да, не скрою, я сам несколько скептически отношусь к LLM, а особенно неоправданному восторгу по их поводу, и сам ими не пользуюсь (для кодинга уж точно). Но я там говорил так-то в принципе даже не об этом, я критиковал конкретный аргумент, конкретную аналогию — она никуда не годится. Рад, что ты нашёл аналогию и аргументы получше. Меня они не убеждают, но они корректнее.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

Ваще просто если кому то интересно, то любовь к компьютерам мне привил мой папа, с 12 лет я начал увлекаться программированием, с 13 лет активно изучал линукс и раст, пробовал себя в вебе, играх. Но все не то, щас занимаюсь кибербезопастностью уже более 3 месяцев. Хотя по проектам это и не скажешь

sqeezy-53
() автор топика
Ответ на: комментарий от CrX

Ты сравнил с компилятором, я объяснил, почему эта аналогия никуда не годится.

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

И ещё камушек в огород детерминированности компиляторов: в общем случае, для решения задач на графах, которые возникают в ходе компиляции, могут использоваться рандомизированные/стохастические алгоритмы. И волноваться об этом начинают только тогда, когда хотят воспроизводимых сборок.

Manhunt ★★★★★
()
Ответ на: комментарий от sqeezy-53

Зачем тебе нейронка, если это далеко не первый твой проект, но при этом он достаточно простой? Что-то тут не сходится.

Сейчас ИИ помогает мне с разработкой

Ты сам говорил, что большую часть кода написала нейронка, а ты тестируешь и формируешь задачи. Это не то, чему тебе сейчас нужно учиться. Тебе нужно писать код, понимая суть того, что ты делаешь, и глубоко понимать взаимосвязи внутри него. А когда всё это делает нейронка, а ты просто смотришь на результат - понимание не наработается.

Ладно, совет я тебе дал, а дальше как хочешь.

liksys ★★★★
()
Ответ на: комментарий от Manhunt

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

Здесь смесь истинных и ложных утверждений. Ложные эти:

в ходе синтеза принимает собственные решения

Компилятор не принимает решений. Это детерменированный и довольно простой алгоритм.

В обоих случаях пользователь не знает досконально что там у инструмента под капотом.

В случае с компилятором пользователь знает, или может узнать. Нормальный программист, как правило, знает — пусть и не досконально, а хотя бы примерно. Хотя я и допускаю существование таких, кто не в зуб ногой.

CrX ★★★★★
()
Ответ на: комментарий от normann

@x905, значит он не признался.

ок, он не признался, а следовало бы )

x905 ★★★★★
()
Ответ на: комментарий от Manhunt

Должен быть агент с ролью «архитектор», и должны быть агенты, которые проводят ревью архитектуры.

Это всё неработоспособная ерунда.

liksys ★★★★
()
Ответ на: комментарий от LightDiver

Нельзя. Слоп-машина тебе такого наслопит, что придется спускаться на нижний уровень и разгребать это говно. Это всё еще автодополнение на стероидах.

Единственная сфера, где нейронки преуспели (для чего они и предназначались, как технология LLM) - это анализ. Вот там пусть и остаются.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от CrX

Со всем плюс-минус согласен, но не с этим:

Своей голове человек всегда доверяет. По умолчанию и довольно безоговорочно.

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

Нейронки так не делают, потому что у них вообще никаких качеств нет, это просто языковые трансформеры. Если мы попытаемся описать такой подход в человеческих терминах, то вопроса доверия к самой себе у нейронки вообще не стоит, и в этом проблема. Ее пытаются преодолеть мультиагентностью, но получается так себе, потому что «агенты-архитекторы» тоже должны быть скептиками. Собственно, эксперименты по созданию компиляторов и браузеров силами нейронок это отлично продемонстрировали. На каждом уровне должен быть скептик, как у людей, а не вот это всё. Тогда задачи могли бы решаться эффективно.

liksys ★★★★
()

Автору.

Не слушайте всех этих, кому тут ваша программа поперек либо не по канонам. Всегда надо с чего-то начинать и при этом, ЧСХ, всегда, и до ИИ, и нынче, вопрос остается один - =где я в этом потоке?=

Потому что - что вы нагуглили и потом накопипастили в код 10 лет назад, что нынче вам просто дали почти что готовое - то всё одно. А вот клей вы полученным из Сети знаниям или просто сбоку стоите - тут и должен быть для вас главный вопрос и честный ваш же ответ. Именно честный, потому что врать самому себе в любимом деле - очень плохо.

Скажу по своему опыту - в последнее время в ответе на этот вопрос самому себе я лично сильно сомневаюсь. Но если вы найдете сильный и хороший ответ - то больше ничего и не надо будет. Будете писать как хотите, без вопросов на заборе. А именно в этом свобода и есть.

Aburus
()
Последнее исправление: Aburus (всего исправлений: 4)
Ответ на: комментарий от Aburus

Но если вы найдете сильный и хороший ответ - то больше ничего и не надо будет.

какую книжку коуч ты прочитал недавно ?

x905 ★★★★★
()
Ответ на: комментарий от x905

Не порите чушь. И подучите русский язык, потому что три очевидных ошибки в предложении - явный перебор.

Aburus
()
Последнее исправление: Aburus (всего исправлений: 2)
Ответ на: комментарий от CrX

в ходе синтеза принимает собственные решения

Компилятор не принимает решений. Это детерменированный и довольно простой алгоритм.

В какой процессорный регистр какую переменную когда разместить - это кто решение принимает?

Manhunt ★★★★★
()
Ответ на: комментарий от liksys

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

Нейронки так не делают

Они так не делают только потому, что ты их не просишь об этом. А надо бы просить. Юнит-тесты с высоким branch coverage. Запуск юнит-тестов с санитайзерами. Запуск статических анализаторов и учёт их замечаний. Различные узконаправленные ревью кода. И так далее.

Если мы попытаемся описать такой подход в человеческих терминах, то вопроса доверия к самой себе у нейронки вообще не стоит, и в этом проблема.

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

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 3)
Ответ на: комментарий от Aburus

Не порите чушь. И подучите русский язык, потому что три очевидных ошибки в предложении - явный перебор.

ты три раза пытался написать это предложение, но всеже смог !

x905 ★★★★★
()
Ответ на: комментарий от Aburus

За себя ответьте, пожалуйста. Не за меня.

не обижайся, мы просто беседуем

x905 ★★★★★
()
Ответ на: комментарий от Manhunt

В какой процессорный регистр какую переменную когда разместить - это кто решение принимает?

Никто. Потому что здесь нет «решения». Очень условно можно сказать, что разработчик компилятора принимает, но это звучит довольно натянуто. Это алгоритм, он работает определённым образом.

Давай упростим: представь себе автомобиль. У него есть кузов, есть колёса, есть ось, на которой эти колёса, есть руль, есть механизм между всем этим делом. Когда ты поворачиваешь руль влево, кто принимает решение, что колёса тоже поворачиваются влево? Да никто не принимает — так механизм устроен. Можно, конечно, сказать, «механизм принимает решение» — но это даже звучит как-то чудно. Он не принимает решений, он просто так устроен. Можно сказать, что тот, кто этот механизм сделал, принял решение сделать его именно таким, а не поставить там посередине какую-нибудь лишнюю передачу, чтобы было ровно наоборот. Но это тоже какие-то натяжки — решение он принял о том, как механизм устроен, а не о том, куда повернутся колёса конкретно сегодня утром после того, как конкретный водитель повернул руль.

Вот и компилятор так же. Он так устроен, а не принимает решение. Да, устроен ощутимо сложнее, чем в примере выше, но всё ещё достаточно просто.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.