Pull to refresh

Два месяца учебы 4-го курса

Добрый день, я студент технического колледжа 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го курса. Я рассказал это для того, чтобы мы узнали друг-друга.

Сейчас я пишу полноценную базу данных на языке Си, в свободное от диплома, учебы и подработки время. Хочу начать использовать ардуино и написать свою маленькую ось. Спасибо за внимание и доброго всем дня и ночи, ваш «нечто»-кодер.

Ссылка на репозиторий
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.