Сообщество - Лига программистов
Добавить пост

Лига программистов

1 514 постов 11 410 подписчиков

Популярные теги в сообществе:

Yoptava – язык программирования на русском языке, транслируемый в Java

Всем привет! Я думаю многие знают такой язык программирования как YoptaScript – язык программирования для гопников и реальных пацанов, транслируемый в чистый JavaScript. Серьёзным этот язык программирования естественно назвать нельзя, но иногда покодить что-нибудь «чотенькое» тоже интересно.

Так как я мало работаю с JavaScript, а в основном пишу код на Java, мне пришла в голову мысль создать что-нибудь подобное YoptaScript для Java. Однако, удивило то, что до сих пор такой ерунды для Java никто не придумал :)

Yoptava – язык программирования на русском языке, транслируемый в Java Программирование, Java, Старославянский язык, Гопники, Длиннопост, Русский язык

Yoptava — это язык программирования на русском языке, транслируемый в Java с помощью Runtime компилятора. Yoptava позволяет выбрать определённую лексику для программирования, например:
- ruptava — классический язык программирования Java на русском языке
- goptava — язык программирования Java для гопников и реальных пацанов, основанный на YoptaScript
- leptava — язык программирования Java использующий старославянскую лексику

Как и YoptaScript, Yoptava не является серьёзной разработкой и был реализован всего за несколько дней. Я думаю тем, кто хотел покодить на русской Java, эта работа зайдёт. Ниже прикладываю примеры.

Классическая Java на русском языке:

Yoptava – язык программирования на русском языке, транслируемый в Java Программирование, Java, Старославянский язык, Гопники, Длиннопост, Русский язык

Старославянский язык:

Yoptava – язык программирования на русском языке, транслируемый в Java Программирование, Java, Старославянский язык, Гопники, Длиннопост, Русский язык

Пример с goptava не прикладывал. Кому интересно – смотрите примеры в репозитории :)
Кстати, Yoptava позволяет также создавать свои языки.

В данный момент в Yoptava есть некоторые недоработки, поэтому кому интересна идея, могут поучаствовать в разработке: https://github.com/Lime-blur/yoptava

Показать полностью 3

"Нейронки всех заменят!" или как этот шум утомил

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

Я тут не буду сильно углубляться в подробности работы нейронок, что они могут и какие плюсы и минусы они несут. Затрону тут один важный момент. На данный момент ни один вендор нейронок (OpenAI, Microsoft, Google etc.) предоставляет всё, что выдаёт нейронка, как есть и с нулевыми гарантиями. И никогда такого не будет, ибо это же сразу налететь на огромные деньги можно. Чет покрутило, чет выдало, мы за это не отвечаем, идите лесом. Соответственно, любой её косяк станет косяком условного менеджера продукта. А теперь найдите мне хоть одного такого, кто готов вот так взять риски непонятной системы без знакомого спеца рядом. То то же.

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

Тг не будет, ссаной картинки из миджорни тоже, они все одинаковые и неинтересные.

Почему мы боимся джунов?

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

Несмотря на бурный рост IT-индустрии, я всё чаще сталкиваюсь с ужасным отношением к людям, которые хотят работать в IT. Практически под каждым материалом для новичков можно найти десятки комментариев с негативом. Я долго не мог понять, почему опытные специалисты презирают «свежую кровь», пока однажды не предположил, что дело в страхе.

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

Почему мы боимся джунов? Карьера, Профессия

Владимир, Senior Frontend Developer

«Нет большего проклятия, чем стажёр, которого тебе дали в качестве условия для PR (прим. Performance Review). Ничего личного, все были молодыми, но условия изменились.

Когда на проект ставят новичка, ему сразу дают таски. Даже опытному разрабу нужно время, чтобы понять код, а что ожидать от стажёра?! Он начинает тупить, от чего постоянно ходит к тебе за помощью и отвлекает. Сам прикинь: на объяснение уходит полчаса-час, потом столько же времени исправить ошибки и, если повезёт, слить ветки без конфликтов. Примерно 20-25% рабочего времени в утиль! Кому это понравится?»

Ольга, HR-manager

«На курсах штампуют джунов, которые потом не тянут реальные проекты, а значит не приносят пользу компании. Самое смешное, что этим тюбикам обещают, что каждый получит зарплату в 120к. И они в это верят, прикинь?

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

Максим, Middle Flutter Developer

«Ты спрашиваешь почему? Джуны ломают рынок! Многие готовы работать за еду или приплачивать за менторство лишь бы залететь в айти. Как раз из-за этого и падают наши зарплаты.

Работодатель не дурак, поэтому начинает манипулировать: «У меня за дверью очередь на твоё место, какое повышение зп?» Ты давно смотрел вакансии? В Москве уже 60к предлагают. И это на мидла! Как прожить на эти деньги, когда у тебя семья и ипотека? С такими темпами скоро на завод пойдём! Вот увидишь!»

Сергей, Chief technical officer

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

Держать людей с self-тасками долго не можем. Как правило, стараемся найти проект в течение месяца или двух. Мидлы и сеньоры долго не сидят в простое, а с джунами сложнее: продать их на проект задача со звездочкой. В некоторых случаях мы вынуждены расставаться после 1–2 месяцев работы. Конечно, стараемся разойтись друзьями, но есть и неприятные ситуации. Один новичок, который работал у нас полгода, писал мне в личку ещё три месяца. Жаловался, угрожал, просил вернуться».

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

В заключение, хочу обозначить, что у меня нет претензий к джунам. Мы все когда-то начинали и все испытывали трудности на первой работе. Поэтому, я позволю себе роль кота Леопольда и скажу: «Ребята, давайте жить дружно».

P.S. Если вас не испугала статья, приглашаю в мой канал «Мама, я вайтишник». Там я даю советы новичкам, составляю программы обучения и рассказываю истории других людей.

Показать полностью 1

У каждого исполнителя бывают такие мысли

У каждого исполнителя бывают такие мысли

Сервис задач для всех (бесплатно)

Всем привет. Для ЛЛ: я сделал веб-приложение для планирования дел с возможностью обмена задачами с другими пользователями, его можно использовать для минипроектов и организации хаоса, который происходит у нас в почте. Приложение бесплатное.

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

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

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

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

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

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

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

Немного изучив рынок, я выбрал платформы spring boot для бэкенда, angular - для фронтенда, mysql - для базы данных, приступил к разработке. Посмотрев кучу видео одного индуса по angular, а также по дизайну с помощью CSS , я приступил к разработке.

Вид задачи я постарался стилизовать под старый ежедневник. Задачу можно раскрыть и добавить в неё подзадачу.

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

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

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

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

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

Сервис задач для всех (бесплатно) Полезное, Google keep, Список дел, Список покупок, Видео, YouTube, Длиннопост

Можно также открыть архив задач и посмотреть завершенные проекты.

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

Напоследок вот мое презентационное видео:

В общем, друзья, кто любит списки дел и планирование своей жизни, предлагаю воспользоваться и протестировать planskeeper.com или так https://www.planskeeper.com/

Показать полностью 6 1

Простейший клеточный автомат, симулирующий конкуренцию

Правило одно - каждый ход, клетка перенимает цвет случайной клетки вокруг себя.

Результат напоминает борьбу (наций, идей, культур, языков и т.п.) за территорию.

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

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

Клеточный автомат простой, но мне хотелось поделиться результатом. Если у вас есть идеи для экспериментов, пишите в комменты. Буду рад!

Показать полностью 1

Собеседования

Недавно мне нужно было найти себе в команду middle backend разработчика. Я провёл собеседования с двумя десятками человек и сказать, что я в ахуе - это ничего не сказать. Контора у нас софтверная, поэтому есть во-первых свои люди, которые сидят в ожидании проектов (на так называемом бенче), а во-вторых, которые у нас сейчас не работают, но с ними уже поговорил HR и направил на техническое собеседование. То есть у первых мидл вроде как подтверждённый, а вторые
заявляют, что на него претендуют.
Я в курсе, что сейчас уровень упал, поэтому решил не упарываться и не валить какими-то хитровыделанными вопросами. Был буквально один вопрос что такое SOLID, пару вопросов по специфике языка, пару вопросов по базам (что такое индексы). И небольшое тестовое задание: реализовать метод для подсчёта рабочих дней между двумя заданными датами.
Итог:
- никто не ответил ни на один вопрос по базам.
- никто не рассказал про SOLID в лучшем случае помнят что такое S.
- язык половина не знает и не понимает.
- тестовое задание "сделали" 2 из 20. Хоть в каком-то примерно работающем виде. Двое отказались даже начинать, когда узнали, что нужно делать в браузере и без гугления.
Я ещё могу понять, что со стороны может приходить кто угодно, но блин там половина была наших, которые имеют этот уровень и получают соответствующую зарплату.

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

Показать полностью

Ответ на пост «Алгоритмы: Открытие тайн кода»

В чем я вижу проблему подобных статей, они “готовят” типичных “вхожденцев в айти”. Мне последние лет десять достаточно часто приходится собеседовать людей в основном на позиции от джуниора до экспа, реже на сеньора и заметил тренд на снижение уровня знаний у людей кто пришел в айти из других профессий, это где-то лет пять назад начало сильно провялятся, и если лет 15 назад люди которые переходили в IT из других профессий в частности алгоритмическую подготовку получали из чтения “нудных” книг типа Кнута, Кормена, чтения книг по дискретной математике и т.д, то сейчас онлайн курсы и различные статьи.

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

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

Второй момент бинарный поиск, сам по себе бинарный поиск предполагает работу с отсортированным массивом данных и поиск не только конкретного элемента, но также алгоритмы upper_bound/lower_bound все это тоже реализуется через бинарный поиск, в статье ни слова об этом. Сама реализация в псевдокоде, но при этом есть “заточки” на язык программирования, что не требуется для псевдокода, реализация на С/С++ сразу в плохом стиле, нет проверок входных параметров, используется знаковый тип для значения длины массива. Все это можно сказать, что не существенно, но это реально формирует “базу” у “вхожденцев”, они пишут небрежно код, используют копипаст, что потом очень сложно исправить.  

Если автор просто тренируется писать технические статьи то это ок,  если же он хочет сделать полезное дело и действительно помочь качественно войти в айти с хорошей алгоритмической подготовкой, то рекомендую изучить материал на том же stepik, курсера конкретно курсы по алгоритмам. Посмотреть книги того же Окулова http://publ.lib.ru/ARCHIVES/O/OKULOV_Stanislav_Mihaylovich/_... если мы говорим про русскоговорящий сегмент.

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

Возможно идеальный курс должен решать какую то большую задачу , например разработка  “database engine ” (но без SQL), тут как раз будут почти все алгоритмы: деревья, сортировки, хеши, всякие  LRU-кеши, алгоритмы во внешней памяти, и т.д. Условно говоря первые полгода читаются статьи/лекции по сложности алгоритмов, базовые структуры данных и алгоритмы, потом постепенно шаг за шагом реализуется своя “СУБД” начиная с файлового стороджа (он же filepager), страничные/буферные кеши, B/B+ деревья, для упрощения можно выбрать простую транзакционную модель  two-phase locking, более продвинуто и заодно применение алгоритмов на графах, это реализация графа ожидания (wait-for graph) для детекта взаимных блокировок транзакций, где то за год можно реализовать, естественно это будет сугубо студенческий проект ни какого продакшен уровня. Есть отличная книга, по которой прям можно делать такой курс:

Database Systems: The Complete Book by Hector Garcia-Molina Jeffrey Ullman  

Можно упростить задачу и вместо СУБД делать реализацию “файловой системы”, естественно файловая система будет жить в user-space, в качестве диска использовать просто большой файл, в качестве бонуса можно прикрутить шифрование. В качестве идеи для вдохновения можно взять довольно старую книгу (но весьма актуальную для такой задачи):

Practical File System by Dominic Giampaolo

Показать полностью
Отличная работа, все прочитано!