Добрый день, я студент технического колледжа 4го года (последнего) обучения.
Я никогда не вернусь в этот колледж, говорил я себе на 2м курсе, но на третьем я понял что я вернусь туда и не раз, по крайней мере просто позабавится. В этой статье я расскажу немного о своём дипломном проекте и о трудностях учебы что привели к созданию ещё нескольких проектов, так же тут будет немного историй из жизни 4го курса.
Подробнее под кат.
Начнётся сей рассказ с истории, как то раз нашу группу собрали для просмотра тем дипломных проектов (ну и самого процесса защиты диплома) у четвёртого курса, где 80% были нагло скопированные сайты (хабр ты тоже там был), 10% были базы данных (привет тостер), 5% форумы (привет… я уже запутался кто) и остальные 5% — действительно самородки.
После этого великого события нас сослали в кабинет где в стиле майора Пейна сказали нам что мы будем есть, если повторим их участь. Я как человек интересующийся всем новым решил: а напишу ка я небольшой ЯП, просто основную концепцию, просто чтоб работал, идею создам.
Когда я так думал я ещё не знал о компиляторах (которые изучать я начал только сегодня), мне не было знакомо ничего, мне был знаком лишь Rust, Java, C#, C, SQL (потом это будет важно).
Часть 1: Что это за чертовщина?!
Не имея знаний от слова совсем но имея огромное желание (но не время, подработка же) я начал штудировать сайты и статьи по 2-3 в день (ибо приходил домой слишком поздно) чтобы хоть что-то понимать. Случайно наткнувшись на тему нейросетей она завладела мной. Ничего не зная я начал реализовывать и мои первые попытки создать ИИ были… ну как сказать… будто у улитки отключилась часть
Чуть позже я забросил это дело, но потом настало нечто, то что я называю: Письмо Линуса о бренности с++.
Это была серия видиороликов, она пробудила меня закончить это дело.
Я начал с нуля. Очистив разум принялся читать и изучать. Узнал несколько алгоритмов но выбрал для себя один (я не помню названия, я помню принцип работы), который и буду развивать в дальнейшем. Это было интересно, как только я начинал писать вроде-бы рабочий код я понимал что он полнейшое «нечто» и переписывал, я переписывал и переписывал, бывало что по 7 раз на дню. Мне не хватало чего-то эдакого, мне не хватало короткого замыкания и вывода мультиконтроллера из строя, мне не хватало острых как ум и быстрых как реакция джедаев решений.
Попросив совета у нескольких авторитетных (у нас) учителей (и по совместительству разработчиков) я был послан очень далеко и на долго, ни у кого нет литературы или времени на такого как я. Всем было наплевать, абсолютно, многие просто не понимали, остальным не было дела, я так обожаю старых и матёрых программистов.
Начав писать первый проект я заморозил его на месяц, из-за работы, где и в последствии я узнал о конечном автомате.
Часть 2: Наплыв идей и реализация
Я помню как всё начиналось. Идея была такой: я переведу Rust в мир нейросетей, сделаю подобный синтаксис и реализацию функций. Хрен то там, как думаете помог ли кто-то с конечным автоматом? Много ли удалось узнать? Нет. Время поджимает, а дел слишком много, было решено потратить два дня на изучение и дальнейший кодинг. Кончался сентябрь, было слишком поздно.
Спустя эти два дня я понял пару интересных моментов:
1-й, Википедия мой друг навека.
2-й, Надо иногда положить на форумы компилятор.
Почему положить? Да потому что нет ответа. Вообще нет нормального объяснения по пунктам, заумные словечки это хорошо, но вот прямо и по делу, ладно, может это и я был глуп и слеп своей идеей.
Начало октября, 1е число, забавный смех в коридоре, громкие звуки и два невыспавшихся студента, сам студент и его портативный пк. «Я смог» — говорил я себе, но на деле я ничего так и не сделал.
Мой конечный автомат работал по принципу: я читаю до пробела/спец. символа, смотрю что там написано и есть ли это в базе слов, после чего принимаю меры. Это даже автоматом наверное не назвать, не знаю, моё мнение о моём «нечте» всегда… это тема не для этой статьи.
Он принимал слова посимвольно и находил их, это было правда круто! Я чувствовал себя героем пока меня не окунули в «нечто». Это нечто зовётся С++, а окунули меня словами: «Да зачем оно тебе надо, там вон мы на С++ сварганили через пень-колоду какую-то полурабочую программу выполняющую функцию чата» (именно столько воды было, её было слишком много), после чего начали тыкать меня в их «супербыстрый чат-клиент», говоря что я не тем занимаюсь и в общем что любая самодеятельность — «нечто».
За четыре года я привык к такому, но мой диплом должен быть хорош, я не смог промолчать и услышал очень многое в адресс людей, которые пишут на чем-то новом. Да вообще, есть же люди с «30 летним стажем пишущие всякие крутые штуки на с++, а ты тут со своими технологиями куда суёшься? ты что, развития захотел? ты что, захотел??» я переборщил, но ладно, мысль понятна.
Через день к нам пришли рассказывать об NODE JS и тут ко мне пришла идея, а что если всё объект? а точнее: а что если всё как в JS, только вместо динамического типа — тип строка? Так и родилось первое ключевое слово 'object'
object - позволяет создать объект (текстовый), но можно использовать его и для математических операций (правда это ещё в процессе)
object obj1 - создаст объект obj1
object obj2 =127.0.0.1 - создаст объект с текстом внутри, учитываются все знаки от '=' до переноса строки.
В проекте будет отдельный модуль для работы нейросетей (движение по нейронам в виде схемы, которую и будем писать сами), модуль серверов (для многопоточного кода и сетевой составляющей) и приём кода в run-time.
нейрон - тип, работу которого задаёт программист создаётся с помощью ключевого слова 'create'
create neyron1 { 0.1, 0.002, 0.2124 } - создаст нейрон с весами 0.1, 0.002, 0.2124
create neyron2 [10] - создаст нейрон с десятью нулевыми весами
сервер - тип, который может использоваться как и для отправки сообщений на другие сервера, так и для приёма, создаётся ключевым словом 'server'
server serv1 = 192.168.0.1 - создаёт сервер и помещает ip в 'стек'
server serv2 - создаёт пустой сервер
launch serv1 - запускает сервер в режим приёма сообщений (но пока не работает)
Так же есть функция print object_or_neyron_or_server и пожалуй всё, а почему? тема отдельной части.
Часть 3: Всё хорошее кончается плохим
Помните те слова про сгоревший мульт, так вот, оказалось что сгорел и блок питания, да и в общем слишком много чего для ноута купленного 2006года за 15к. Начав писать на нетбуке я понял как сильно важна память (когда твои 32 гб кончились и у тебя только 1.5гб доступно), да и курсач начал подступать. В общем я переключился.
Я стал делать курсач, но тут выяснилось что он по базам данных, а sql server не влезет, а для остального нет памяти ибо я ещё и свой «нечто»-код хранить хочу. Пришлось написать мини-бд основываясь на реализации конечного автомата в дипломном проекте.
Подтянул файл лицензии, думаю что прокатит, но зря так думаю, ибо начался завал и на работе, да и на остальных дисциплинах резко пошли срезы и проект ушёл на задний план.
Да черт его подери! Что это происходит со мной?! Я в это не верю!
Это всё что у меня крутилось в голове и продолжает крутиться и по сей день.
Последняя часть, заключение
Подработка завалила меня, учеба завалила, но лишь мысли о дипломе помогают держаться на плаву. Я рассказал вам два месяца учебы студента 4го курса. Я рассказал это для того, чтобы мы узнали друг-друга.
Сейчас я пишу полноценную базу данных на языке Си, в свободное от диплома, учебы и подработки время. Хочу начать использовать ардуино и написать свою маленькую ось. Спасибо за внимание и доброго всем дня и ночи, ваш «нечто»-кодер.
Автор: призывник