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

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

1 542 поста 11 462 подписчика

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

Legacy

Недокументированный (или плохо документированный) код всегда превращается в legacy. И он остаётся legacy даже тогда, когда тонкости кода/платформы знает/понимает не только один человек. Без внятной документации любая платформа медленно умирает, хоть и может приносить материальную выгоду какое-то время.
===
Проблема "наследия" (на мой взгляд) - проблема о длинах сторон треугольника (программирование/разработка = 0, поддержка/внедрение = 1, управление = 2), где поле условной свободы (возможность доработки/поддержки/планирования) при развитии ПО/продукта равна вписанной в треугольник окружности (на мой скромный взгляд, довольно хорошая аналогия).

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

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

Как БЕСПЛАТНО получить платные курсы по ПРОГРАММИРОВАНИЮ?

Самооценка

Самооценка Разработка, Программирование, Скриншот, IT юмор

https://t.me/ithueti/6016

Занятия с напарниками по Haskell (2)

Здравствуйте. Продолжаю описывать интересные моменты из наших занятий в группе по Haskell ( Предыдущий пост ). 


Прошла еще неделя. Мы стабильно выдерживаем 1ч 20мин за занятие в день. Иногда чуть подольше.

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


Второе - о, это особенный момент, который встречается много в каких обучающих материалах!

Этот неприятный момент -  прыжки в будущее. Можно читать, разбирать базовые операции со строками, но уже в примерах используются модули и\или монада IO. Причем автор книги уверяет читателя в том, что вы узнаете и поймете эти моменты потом. Сейчас же просто скопируйте пример кода и запустите. Сместите фокус на то, что делает функция putStrLn, а на тип не смотрите. Потом узнаете зачем в типе у этой функции написано IO.


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


Теряется последовательность изложения материала. А это сбивает. И если мозг можно усмирить - реально сместить фокус на важное, то на эмоциональном уровне остаются мелкие "зазубрины". Эх, вот бы еще и то знать. А как вон ту штуку использовать, про которую рассказали? Блин, ну интересно же было бы понять. А прыгать вперед еще хуже. Это и с мысли собьет. И все равно это будет непонятно.


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


В начале занятий иногда проводим опросы, вдруг кто что подзабыл. Был случай: дали напарнику пример из книги на подстановки из лямбда-исчисления, применение термов. И пример был решен. Вроде даже хорошо. Только забыли про альфа-эквивалентность. И следовательно, ответ был не верен. Ничего страшного. Другой пример уже был сделан как надо.


Начали делать первые практические упражнения. Тут наши предпочтения разошлись. Моя личная цель - это изучения языка, а не его экосистемы. Поэтому я просто открываю вкладку с онлайн компилятором Haskell и тут же решаю задачи. Ребята же захотели установить среду разработки себе на компьютер локально. GhcUP или как-то так. Там еще stack, cabal. Брр, мне пока лень в этом разбираться. Наверное, напарники поступают лучше. Может, в будущем они меня мотивируют поступить так же.

Ну и поделюсь еще одним интересным случаем. Разбирали мы простейшие математические операторы в Haskell. Умножение, сложение, вычитание. И div, mod, quot, rem. Какой остаток будет от деления 20 на 6? Два - бодро отвечает вся группа. А каков будет остаток от деления 20 на -6? И все, мы поплыли. Думали, сейчас в гугле посмотрим, за 5 минут разберемся. 3 парням, которым за 30, и не справиться с таким простейшим вопросом? Ага. Не справились, ни за 5 минут, ни за оставшиеся полчаса того занятия. Справились за выходные к следующему уроку. И то, на троих. Первый разобрался, что такое делимое, делитель, неполное частное, остаток от деления. Второй указал на момент, что бывает округление в минус бесконечность и к нулю. Третий собрал эти факты в кучу, и наконец-то - вы можете нас поздравить с пониманием куска школьной программы.


Посмотрим, что будет дальше. Будут новые главы книги, будут новые вызовы. Справимся? =) 

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

Как я вижу приближающийся дедлайн

Как я вижу приближающийся дедлайн

Хочу программировать. От WEB-приложения до ПК версии

Всем привет. 7 месяцев прошло с моего последнего поста. Вот этого:

Когда помощь зашла...


Тогда на VueJS я реализовал веб-приложение для хранения и обмена текстами новостных сюжетов. Вот уже 7 месяцев оно вполне адекватно работает на сервисе Heroku.

Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост

Чуть позже я добавил функционал, который позволил копировать части текста из приложения так, чтобы CEPHtmlEngine в Adobe Premiere мог самостоятельно расставлять небольшие участки видео, в частности интервью, а After Effects в автоматическом режиме создавал титры для интервью.

Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост
Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост

Панели в Adobe, кстати, я тоже написал самостоятельно. В них так же используется JavaScript.

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

Так или иначе, дело шло. Медленно, но стабильно... Ровно до того момента, пока ввиду определенных событий не начался большой исход зарубежных компаний из России. А так как моей целью был зарубежный сервис Heroku, то я начал немного переживать, а вдруг и он уйдет... А приложение пишется...

Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост

Приложение на VueJS... Других языков программирования я не знаю... И единственное решение, которое я для себя нашел - фреймворк Electron. На момент написания поста приложение находится в стадии подготовки к компиляции для Windows.

Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост

В качестве хранилища информации я выбрал сетевой диск от mail.ru. Данные хранятся в формате JSON. Может, не самое правильное решение, но дешево и сердито. На крайний случай все может работать и с локальным сетевым диском, если выключится вообще все вместе с интернетом.

Хочу программировать. От WEB-приложения до ПК версии Программирование, Vue, Electron, Длиннопост

В планах после запуска приложения в работу написать CEP панель для InDesign, которая будет подхватывать данные из сохраненных JSON и вставлять тексты по шаблону на верстаемые полосы. Пока все. Спасибо за внимание и до новых встреч...

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

Эффективный приём (на мой взгляд)

Один из любимых приёмов в программировании - использование ассоциативного массива вида "ключ = ссылка на подпрограмму", что позволяет формировать необходимую функциональность (в т.ч. и отключать то, что не требуется при определённой конфигурации) на этапе чтения/перечитывания файла конфигурации (или при старте скрипта/программы).
===
P.S. Для кого-то (из числа наиболее опытных программистов) тезис/приём может показаться очевидной очевидностью, но, как говорится, не каждый программист не является новичком.
===
UPD. Ассоциативный массив в рамках публикации = ассоциативный массив ЯП Perl 5.

Проверяем точность глазомера

Что имеем: три уровня, на каждом свой предмет
Что надо сделать: разделить их ровнехонько на четыре части
Что получим: промокод на хорошую скидку, а самые точные — награду в профиль

Первые шаги Юного Чайника

День добрый, господа программисты!


Пишет совсем юный подаван, которому и очень хочется, и колется.


Училась и продолжаю учиться в престижном вузе Москвы на программиста-математика. И всё бы было бы прекрасно и замечательно (знания, абстракции великие и всемогущие и ещё больше абстракций…), если бы не одно НО… Спустя три года могу уверено заявить, что я ни черта не понимаю и не знаю в интересующей меня области (IT), и теория до меня если и доходит, то явно задним числом тринадцатого месяца.

Не всё, конечно, так печально, теорию медленно и верно я всё-таки постигаю… но исключительно через практику. Что-то из разряда прослушать курс по C++, и только через полгода, попав к нормальному семинаристу по праку, сказать глубокомысленное «Аааа… Вот что это оказывается было…».

И только встретив этого семинариста, я, наконец, поняла, что мои вялые попытки самообучения были обречены на провал с самого начала, так как, во-первых, я не совсем понимала и до сих пор не очень понимаю, как простроить свой путь изучения в IT (для примера Web-технологии, которые я пыталась мучить с полгода) не погрязнув в обилии материалов, курсов, видосиков и книг разной степени сомнительности. А во-вторых, я поняла, что мне просто жизненно необходим человек, который посмотрит на мой код, проникновенно заглянет мне в глаза и ласково скажет: «Вы творите херню, сударыня!». И периодически переходя на нецензурные эпитеты, объяснит, что нафиг не сдались здесь эти дружественные классы, и вообще интерфейс – говно. А я восхищенно вздыхая и делая испуганные глаза, буду в кратковременные паузы вставлять свои максимально тупые вопросы… Ну и потом буду с энтузиазмом стучать по клавишам клавиатуры, наконец-то хоть немного понимая, что твориться в этом мире. Мечта в общем…

И в итоге появляется следующий квест: как найти стажировку в IT, имея за спиной достаточно убогий багаж знаний?.. На том же hh.ru в вакансиях даже без опыта работы требуется достаточно хороший стэк знаний, которым я, очевидно, не располагаю…


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

И, наверное, самый важный вопрос, с которого стоило бы начать… Как вообще определить для себя область развития, имея весьма сомнительное понимание разных сфер IT? Т.е. я пока искренне не понимаю, куда было бы интереснее впрягаться со всеми потрохами: в веб-разработку, в ужасный и всеобъемлющий back-end или еще куда?..


Набор знаний, которым я пока располагаю:

- Базовые знания HTML + CSS + JS

- Базовые знания ООП

- Базовые знания С, C++

- Базовые знания Python

- Немного опыта работы с функциональным программированием


Буду рада узнать любое мнение, помощь очень нужна.

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