?

Log in

No account? Create an account

Entries by category: it

Есть ли жицнь за МКАДом?
светлое будущее
potan
Вакансия в Екатиренбурге С++, Rust, blockchain и зарплата всего 40 000 рублей.
Там правда люди живут?

ROS и языки программирования.
светлое будущее
potan
Дослушал курс до конца, и даже выполнил все задания.
Оказалось полезно: ROS - система с развитой инфраструктурой, богатой деталями и тонкостями, разбираться с которой по текстам не имея конкретной задачи я уже много раз ленился, а искать задачу не разобравшись не рисковал.
Основная фича ROS - возможность создавать и связывать в единую систему микросервисы, работающие по принципам "статически типизированная подписка на топик". Типы сообщений представляют из себя аналог C-шных структур, алгебраические типы (и даже union) не поддерживаются.
Мы проходили API для C++. На дворе 21 век, а это API реализованно на callback-ах. При этом авторы API уже забыли про старый добрый C и не реализовали передачу пользовательских данных дополнительным аргументом, а про C++11 еще не слышали, и лямбды не принимают. В курсе общение между callback-ами делалось через глобальные переменные, но API все таки позволяет так не делать - вместо лямбд поддерживается boost::function (у которого есть конструктор из лямбды, так что не все так плохо), а вместо явного дополнительного параметра можно передать ссылку произвольный объект и на его метод (ссылки на методы я всегда считал странной, не совсем консистентной фичей, использование которой видел только в qt, который крив сам по себе, но здесь это решение оказалось вполне рабочим).
Большую роль в ROS играет страшный cmake, которым мы пользовались на уровне заклинаний "поправить такую-то строчку в таком то файле". При сборке в сообщениях проскаивает геренация библиотек не только для плюсов и питона, но еще для nodejs, lisp и какого-то eus.
У меня сложилость впечатление, что прорыв в программировании роботов произойдет тогда, когда миры робототехники и функционального программировния пересекутся - уж больно хорошо все это ложиться на функциональную парадигму. Задачи похожи на разработку UI (только вместо пользователя реальный мир, можно сказать WI), только больше и сложнее, а в интерфейсах функциональщина сильно все упрощает.
В общем возникает сильное желание попробовать там Purescript, поверх nodejs, а потом прикрутить еще Rust/gluon и Julia.

Где нужны "зависимые типы"?
светлое будущее
potan
Все хотят применять "depended types" в разработке больших сложный систем, но мало кто в этом добился хоть каких-нибудь заметных успехов.
Оно и понятно - "зависимые типы" очень усложняют жизнь, а разработкой таких систем занимаются опытные программисты, располагающие развитыми средствами отладки и тестирования. То есть привносимый геморрой не оправдывает потенциальные не слишком радикальные преимущества.
А вот во всяких DSL для конфигурирования, воркфлоу, всяких политик, "умных контрактов" в блокчейнах, скриптов для "интернета вещей", да и просто скриптов для автоматизации рутинной работы чего-то типа "зависимых типов" для обеспечения надежности остро не хватает.
Во первых все эти программы относительно простые, и даже усложнение их разработки в 3-4 раза не так уж и страшно, да и время компиляции от дополнительных проверок сильно не вырастет.
Во вторых средства разработки у них не развиты и врядли для столь узких ниш кто-то этим будет заморачиваться.
В третьих пишут их не профессиональные программисты, а специалисты в своих предметных областях.
Tags:

Числовые классы типов в Rust
светлое будущее
potan
Написал статью на Хабре.
Теперь вот так...

Rust by example.
светлое будущее
potan
Отличный способ учить язык программирования.
Правда примеры написаны для старой версии компилятора, но сообщения об ошибках удивительно качественные и исправить обычно не сложно?
Интересно, когда на этом языке начнут проекты делать? Rust позволяет писать почти столь же эффективно и обобщенно, как C++ и при этом более надежно, чем на Java. Идеально для программирования Гигантских Боевых Ржавых Роботов!

Как научится программировать (и не только на R)
светлое будущее
potan
Оригинал взят у p2004r в Как научится программировать (и не только на R)
К большому сожалению большинство начинает изучать программирование с крайне низкоуровневых языков, и в дальнейшем совершенно никак не пытаются повысить свой начальный навык. Фактически всё "знание" о программировании сводится к двум формам языка программирования if (оператор условного перехода) и for (оператор цикла).

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

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

Доказано что 80-90% кода "научных" программ может быть написано используя набор конструкций apply-filter-reduce взятый из функционального программирования. Второй известный подход это векторизация операций языка, взятая в R(S) из APL(J). В R операторы обоих подходов прекрасно сочетаются друг с другом и позволяют полностью избежать использования низкоуровневых (причем ещё и рудиментарных в случае R) конструкций языка. Более того эти операции практически автоматически переводятся в параллельный код.

Наилучший курс программирования для изучающих R, это курс который подвиг Автора языка на его создание... Да, да... есть начальный курс программирования который ставит своей задачей постепенно научить новичка не просто программировать, а изменять язык программирования под свои задачи. Это конечно SICP от МИТ http://mitpress.mit.edu/sicp/ . Именно им вдохновлялись когда разрабатывали R. Для начала достаточно посмотреть видеолекции курса https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PL8FE88AA54363BC46 (там есть выверенный английский подстрочник).

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

Программировать как "на фортране" это последний способ "изучить" R :( Попробуйте сначала прочитать и выполнить всё из официального "Введения в R" http://cran.r-project.org/manuals.html (на страничке сообщества есть ссылка на перевод). Потом можно прочитать "R инферно" http://www.burns-stat.com/documents/books/the-r-inferno/ . И в заключении посмотреть "высокое программирование" например на http://adv-r.had.co.nz/

Не дайте себя обмануть пологой кривой обучения низкоуровневых языков позволяющих новичкам бездумно обходится двумя конструкциями языка "наяривая" километры "макаронного" кода. Вы тем самым ставите самому себе подножку в своем развитии как профессионала... да и изнашиваете свой интеллект пережевывая эту "жвачкой" из бесконечных циклов :(


Вспомнил молодость.
светлое будущее
potan
Монады на C++. С классами типов, как положено.

Update: Решил посмотреть на c++11 - что курят разработчики стандарта? Ввели они type alias - типа замены запрещенных (кстати, непонятно по каким соображениям) шаблонов typedef. Так они умудрились в них задействовать уже используемое ключевое слово, да так, что без -std=c++11 компилятор выдает совершенно непонятную ошибку. Как хорошо, что я на этом языке не пишу...

nixos
светлое будущее
potan
nixos - это правильная gentoo.
То, что опции nixа похожи на rpmные не очень приятно, но энтерпрайзно.
Буду переезжать...
Tags: ,

Mac vs win.
светлое будущее
potan
Почувствовал таки что mac рулит.
Read more...Collapse )
С грядущим кризисом у меня связана одна надежда. Пользователи поумнеют, перестанут покупать всякую бяку и микрософт разориться. Я очень на это надеюсь.
Tags:

Scheme vs Haskell - с точки зрения изучения.
светлое будущее
potan
В порядке эксперимента дали аппаратчику почитать SICP, в котором используют язык Scheme.
Забавно, что прочитав несколько глав он пытается писать в стиле (map (* 2) (list 1 2 3)).
То есть Haskell более естественнен, а те, кто ввел в Scheme функции с неопределенным количеством аргументов - ненатур слишком хорошо подумали.
Tags: ,

Священная война.
светлое будущее
potan
Наблюдая за священной войной thesz vs garrrrr сам задумался на вечные темы.
Read more...Collapse )
Война пока вырождается в "избиение младенца". Интересно, сможет ли garrrrr нанести ответный удар?..

Пересылка сообщений и приоритеты.
светлое будущее
potan
В Erlang сообщения посытаются конкретным процессам. И процесс, который не успевает обрабатывать сообщения получает наибольший приоритет.
Эта схема хорошо работает, если "по смыслу" приоритеты всех процессов одинаковые. Если же есть более и менее важные процессы, то полезно иметь возможность наследовать приоритет.
Если высокоприоритетный процесс ждет сообщения, то логично поднять приоритет тому процессу, который это сообщение пошлет. Но в Erlang определить процесс, который может послать сообщение данному не очень просто. Теоретически можно пробежаться по данным всех процессов и определить у кого есть идентификатор нужного процесса (благо PID в Erlang выделен в отдельный тип). Но по моему, это слишком ресурсоемко для такой задачи.
Интересно, а где-нибудь реализована схема, двойственная к ерланговской? То есть посылается сообщение "в пространство", а для получения надо указать PID отправителя?
Есть более общие схемы - с каналами сообщений или общим пулом сообщений, но они не дают информацию для управления приоритетами.

Ресурсы.
светлое будущее
potan
Основным, а для многих и единственным стимулом развиваться (или, хотя бы, придумывать что-то новенькое) является недостаток ресурсов. А ресурсом может быть все, что угодно.
Один из ресурсов - люди. Например дефицит высококвалифицированных программистов привел к созданию языков, типа Erlang, на которых писать прилично работающие программы может любой студент.

Интересно, к чему бы привел недостаток в программистах вообще? Даже низкой квалификации?

Опыт как отрицательный фактор.
КМПкВ
potan
Интересная дискуссия возникла на тему: может ли некий опыт работы быть поводом для дискриминации.
Например, будь я работодателем, я бы старался не брать программистов, имеющих опыт работы на пхп или 1c (за редким исключением). На мой взгляд, если человек не смог понять, что занимается говном, то доверять ему ответственную работу не стоит.

Erlang...
светлое будущее
potan
Вроде как считается лучшим языком для телекома.
но возникают неожиданные проблемыCollapse )
Tags:

Вопрос-ответ
КМПкВ
potan
Люди, а мы вобще кто, типа программисты??? спрашивают нас.
Нет, вы быдлокодеры и ни чего лишниго вам знать не положено. Больше ответить нечего.

Linux, windows и телевиденье.
светлое будущее
potan
9 февраля 2007 года в Санкт-Петербурге состоялся круглый стол "Linux vs. Windows: кто победит в России?".
А по телевизору не показали.

ReactOS vs Linux...
светлое будущее
potan
По случаю "дела Поносова" задумался, если в школах с таким скрипом идет Linux, может туда ReactOS продвигать?
Попробовал запустить его под qemu, вроде пошел, даже Far проинсталировался.

Linux в школы!
светлое будущее
potan
Если учитель решит использовать в учебном процессе Linux, есть специалисты, готовые безвозмездно помочь.
Я тоже готов в этом принять участие.

А в Fortranе можно было переопределить единицу...
светлое будущее
potan
let { 1+1 = 3 ; 3+1 = 7 } in 1+1+1

via thesz
Tags: