Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Shmj Ниоткуда  
Дата: 09.09.17 21:09
Оценка: +1
По сути C#/Java, C++, C, JS одинаковые. Отличаются в мелочах. Ну там фишка прямые указатели в память, там фишка динамические структуры и пр. Я как то перешел на Java и мне хватило всего 2 месяца, чтобы чувствовать себя комфортно (подстроил окружение, разобрался с базой линукса, выучил как выйти из vim и пр.).

С C++ переводил на C#. В принципе та же балда. В C# тоже указатели есть, если кто не знал...

Немного писал для микроконтроллеров на голом C. Криптография, работа с периферией, USB и пр. Это еще в "доардуинную эру", с ардуино все сделали так, что и школьник разберется. Но углублятся не стал -- тоска.

На JS тоже не мало ваял сайты, приходилось. Больше ненависти вызывают эти новомодные фреймворки (а уже, неаверное, устаревшие) типа Angular и пр. Там они меняются чуть ли не каждый месяц. Вот это реально напрягает.

Раньше даже в машинных кодах для Z80 писал. Было дело. Ну и немного с защищенным режимом для Intel разбирался, чтобы чуть понимать что за зверь. Но не спец в этом.

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

Хочется чем-то разогнать мозг так сказать. Чтобы не рутина а реально новые сложные для понимания вещи.

Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?

З.Ы.
Математику не предлагать -- одному скучно. С языком программирования ты хотя бы видешь результаты -- работает прога или нет.
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 09.09.17 21:37
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?


Про Haskell ничего не знаю, если нужно нечто отличающееся от C/C++ и полезное, то тот же Lua. С ним можно сделать привычные конструкции из разных парадигм программирования. Причём возможности этих конструкций будут зависеть от самого программиста, то есть от его уровня развития. Часто используется для написания AI для игр. Как IDE можно использовать Geany и не забыть поставить сам Lua нужной версии. А можно наклепать дополнений для того же Garry's Mod и прочих игр. С другой стороны если развилась функциональная закреплённость, то чтобы преодолеть её нужно хотя бы понять, что она есть. Тот же C++ можно использовать частично и всё прекрасно будет работать.
Re: Haskell или что-то подобное -- что порекомендуете для ра
От: _ilya_  
Дата: 09.09.17 23:12
Оценка: +1 :))) :)
Здравствуйте, Shmj, Вы писали:

S>Математику не предлагать -- одному скучно. С языком программирования ты хотя бы видешь результаты -- работает прога или нет.


1C. Развитие в ширь а не в глубину. Собственно если знаешь бейсик, далее машинные коды, ассемблер, паскаль, Си, ... далее все языки одна и та же хрень. Просто процессоры не поменялись — те наборы простейших команд что они выполняют стабильны. Далее все что сверху это только обертки типа разных цветов, более красивые и более быстрые но сама суть не меняется.
Развиваясь в ширь — получаешь знания из других отраслей а не просто кодинга.
Отредактировано 09.09.2017 23:13 _ilya_ . Предыдущая версия .
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: cures Россия cures.narod.ru
Дата: 10.09.17 01:47
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?


Сразу Хаскель — может оказаться слишком жёстко. Раз появился интерес к функциональщине, можно попробовать триаду: сам Хаскель, Эрланг и Лисп (например, Общий). Эрланг проще тем, что не ленивый, соответственно, не нужно изучать монады и остальное с этим связанное. Лисп ещё проще тем, что в нём можно смухлевать Так как он — не чисто функциональный, в нём вполне себе есть переприсваивания.
Чтобы видеть результат (не факт, что сразу), на hackerrank.com есть целый домен с баджем Functional Programming, в нём несколько разделов задач, по которым Вас заботливо проведут для получения звёзд. Плюс в первых задачах есть готовый шаблон программы с вводом-выводом на любом из этих трёх (и ещё нескольких) языков.

S>Хочется чем-то разогнать мозг так сказать. Чтобы не рутина а реально новые сложные для понимания вещи.


А для этого там же есть много сложных задач безотносительно языков, домен — Алгоритмы, математики там не слишком много. Плюс на курсере появилось много приличных курсов по отдельным алгоритмическим аспектам (графы, строки). Но они, заразы, там все платные, то есть лекции посмотрите на халяву, а вот задачки без сотен нефти Вам не покажут, придётся самостоятельно придумывать.
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 10.09.17 08:03
Оценка: 1 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Хочется чем-то разогнать мозг так сказать. Чтобы не рутина а реально новые сложные для понимания вещи.

S>Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?

Да, хаскель хороший вариант. Не только потому что заметно отличается (про всякие Lua тут смешно слышать даже), а еще потому что это такая латынь в ФП, хаб, перекресток, откуда сразу открывается множество дорог:
* куча хитроумных статей по ФП его использует, одних только статей Киселева и Пипони хватит мозг нагрузить на годы вперед
* теория типов, через нее выход на теорию категорий
* в библиотеках много новых для императивного программиста концепций, пока научишься монадные трансформеры с линзами применять уже поумнеешь на 23 пункта.

Я функциональщину начинал с Окамла, тоже богатый на ФП концепции язык, но не такой экстремистский, в него проще зайти и тоже полезно хотя бы уметь читать.
После хаскеля или параллельно ему еще можно смотреть на Идрис. Там уже зависимые типы в полную силу, что многие вещи из хаскельного фольклора упрощает, но входной барьер может быть высоким.
Re[2]: Haskell или что-то подобное -- что порекомендуете для ра
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 10.09.17 08:13
Оценка: +2
Здравствуйте, _ilya_, Вы писали:

__> Собственно если знаешь бейсик, далее машинные коды, ассемблер, паскаль, Си, ... далее все языки одна и та же хрень.


Это звучит как если б человек знал русский, украинский и белорусский и думал бы, что все остальные языки ему уже знакомы и понятны, что например китайский такой же точно. С одной стороны это, конечно, всего лишь язык. Но он сильно другой. Настолько, что все знания славянских языков бесполезны. Вот и с языками вроде Haskell/PureScript/Clean/Idris примерно так. Это не паскаль совсем, это другой мир, заход на программирование с другого конца — не со стороны ассемблера.
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: vsb Казахстан  
Дата: 10.09.17 08:15
Оценка: +3 -1 :)
Rust тоже интересный язык, не похожий на другие в плане управления памятью.
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: scf  
Дата: 10.09.17 08:16
Оценка:
Здравствуйте, Shmj, Вы писали:
S>Хочется чем-то разогнать мозг так сказать. Чтобы не рутина а реально новые сложные для понимания вещи.
Хаскель — хороший выбор, но сложный. Языки попроще, но не менее интересные, это Common Lisp и OCaml.
Из более практичного:
— программирование для многопроцессорных систем — книжка the art of multiprocessor programming
— асинхронные сетевые клиенты и серверы — select/IOCP. из JVM мира рекомендую разобраться с архитектурой Netty.
— параллельное программирование через Promise/Future. Концепт, композиция, управление тредпулами. Наиболее развита сейчас эта область в языке Scala — Akka framework или Twitter Finagle
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 10.09.17 13:11
Оценка:
Я могу предложить тебе суперчелледж.

1) раз все языки одинаковые, то можно программировать на КуМир'е. Это единственный опенсорсный русский язык програмимрования.
2) он позволяет написать компилятор
(работа с файлами, символами есть, можно создавать новые массивы (выделять память) во время вызова алгоритмов).
3) ...
4) предлагаю тебе написать на КуМир-е русский компилятор, превосходящий все остальные и захватить мировое лидерство в компиляторостроении.

Но ты же наверное не замучаться хотел, а что-то другое?
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Kolesiki  
Дата: 10.09.17 19:06
Оценка: +1 -3
Здравствуйте, Shmj, Вы писали:

S>По сути C#/Java, C++, C, JS одинаковые. Отличаются в мелочах.


Вот ты сейчас такую мегаэпичную глупость сказал, что я два раза челюсть подымал! Такое могут себе позволить либо какие-то непризнанные гении, окончившие универ в 10 лет, либо такие беспросветные дилетанты, которым я и паскаля бы не доверил.
Если C#/Java ещё как-то можно породнить, то остальные упомянутые это практически разные сферы! То, что ты увидел в обоих void или foreach, вообще никак не делает тебя "знатоком языка", понимаешь? Ты тупо "знаток ключевых слов". Так что не позорься, выучи хотя бы пару языков НОРМАЛЬНО, вглубь — тогда и не будешь никогда говорить "отличие в мелочах". Ох, ну юморасты!!
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Kolesiki  
Дата: 10.09.17 19:16
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Хочется чем-то разогнать мозг так сказать. Чтобы не рутина а реально новые сложные для понимания вещи.


Так ты в ИТ развлекаться пришёл?? Так и скажи, просто тут у многих программирование — это профессия, т.е. клоунизм исключён априори.
Хотя странно... раз ты такой умный, почему тупо не откроешь википедию "список языков"? Тыкай в любой из них и смотри — вдруг ты его уже знаешь! Вот там, в 80-ых, осталась целая тележка диких языков, которые тебе точно мозг сломают (да тут даже тыкать не надо — brainfuck сразу же разрабатывался для слома мозга! ).
Хотя будь у меня столько же бесполезного времени, как у тебя, я б всё же изучил побольше платформу, на которой пишу — вот там все ньюансы и "принципы" и за что тебе и будут платить деньги.
А для кругозора я б Хаскель вообще не брал — нет смысла писать write-only код. Смоллток бы изучил, ЛИСП — само собой, Пролог не помешал бы (просто поиграться). Но игрушки быстро надоедают, особенно если знакомиться с ними поверхностно. Вот есть с виду простой Немерле — тоже как бы "почти C#", но стоит коснуться макросов, и уйдёшь с головой. Особенно если нужны работающие макросы. Там куча тонких мест, после разруливания которых можно получить впечатляющий результат, недостижимый в 99% языков. Имей ввиду.
Re[2]: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Shmj Ниоткуда  
Дата: 11.09.17 00:29
Оценка: +1
Здравствуйте, Kolesiki, Вы писали:

K>Вот ты сейчас такую мегаэпичную глупость сказал, что я два раза челюсть подымал! Такое могут себе позволить либо какие-то непризнанные гении, окончившие универ в 10 лет, либо такие беспросветные дилетанты, которым я и паскаля бы не доверил.


Вообще то что чел. в раннем возрасте достиг успеха -- не говорит что и дальше он будет превосходить всех сверстников.

Посмотрите на судьбу вундеркиндов -- не много среди них успешных ученых.

K>Если C#/Java ещё как-то можно породнить, то остальные упомянутые это практически разные сферы! То, что ты увидел в обоих void или foreach, вообще никак не делает тебя "знатоком языка", понимаешь? Ты тупо "знаток ключевых слов". Так что не позорься, выучи хотя бы пару языков НОРМАЛЬНО, вглубь — тогда и не будешь никогда говорить "отличие в мелочах". Ох, ну юморасты!!


Бро, я уже почти 15 лет считай каждый день кодирую.
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: pestis  
Дата: 11.09.17 04:34
Оценка: +1 :)
Здравствуйте, Shmj, Вы писали:

S>Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?


Хаскель требует просто дохрена времени. Не на сам язык, он-то как раз простой, а на освоение достаточно нетривиальных концепций, которые нельзя просто вычитать в книжке в популярном изложении, нужно читать научные статьи в первоисточнике. Зато это перспективно, то что сейчас есть в хаскеле, будет в твоем рабочем языке* лет через 20, так что у тебя есть все шансы не отстать от паровоза к пенсии.

* не касается С++, там оно будет лет через 50

Основная сложность в хаскеле это непроработтаность идиом. Если для мейнстримного языка** ты можешь прочесть книжки тиипа "%language_name% in a nutshell", "Thinking in %language_name%", или "%any_adjective% %language_name%" и начать писать код как все, то для хаскеля и прочих маргинальных языков это не сработает. По какой-то причине, для этих языков паттерны и бэст практисы вообще никто не прорабатывает, так что тебе придется убить тонну времени чтобы наступить на все возможные грабли самостоятельно.

** не касается С++, там даже до общего стиля кодинга договориться не сумели.

Если не пугает, дерзай. Альтернативы:

1. Современный Лисп, любой. Clojure, ClojureScript, Scheme. Вопреки распространенному мнению, они вполне себе востребованы. ClojureScript, к примеру, рулит в вебе и довольно многие, кто не хочет использовать JS фреймворки на нем пишут.

2. Erlang. Стоит изучать для того чтобы понимать как работает современный подход к многозадачности и параллельным вычислениям и как надежно обработать миллион запросов в секунду.

3. Scala. Haskel для тех кто не осилил. Очень красивая система типов, пожалуй лучшая что можно построить поверх JVM. Система типов настолько хороша, что позволяет через вывод типов производить вычисления в компайл тайме. Шаблоны из плюсов сосут причмокивая.
Re[2]: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 11.09.17 06:18
Оценка:
Здравствуйте, pestis, Вы писали:

Первые две отсылки к С++ хорошо вышли.

P>3. Scala. Haskel для тех кто не осилил. Очень красивая система типов, пожалуй лучшая что можно построить поверх JVM. Система типов настолько хороша, что позволяет через вывод типов производить вычисления в компайл тайме. Шаблоны из плюсов сосут причмокивая.


А вот тут можно примеров?
Арифметика в типах в С++ поддерживается нативно, и это обычно получается намного проще и удобнее, чем всякие хазохизмы с Пеано, нумералами Черча и подобных ужасов. А если не про арифметику, а про тайп-левел вычисления в более общем виде, то тут оба языка кажутся безобразиями. Может, я что-то пропустил, и есть красивые примеры?
А так Скала во многом повторяет судьбу плюсов: полный разброд в стилях, репутация переусложненного языка, еще более тормозной компилятор.
Re[3]: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: mizuchi Земля  
Дата: 11.09.17 06:57
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Kolesiki, Вы писали:


K>>Вот ты сейчас такую мегаэпичную глупость сказал, что я два раза челюсть подымал! Такое могут себе позволить либо какие-то непризнанные гении, окончившие универ в 10 лет, либо такие беспросветные дилетанты, которым я и паскаля бы не доверил.


S>Вообще то что чел. в раннем возрасте достиг успеха -- не говорит что и дальше он будет превосходить всех сверстников.


S>Посмотрите на судьбу вундеркиндов -- не много среди них успешных ученых.


K>>Если C#/Java ещё как-то можно породнить, то остальные упомянутые это практически разные сферы! То, что ты увидел в обоих void или foreach, вообще никак не делает тебя "знатоком языка", понимаешь? Ты тупо "знаток ключевых слов". Так что не позорься, выучи хотя бы пару языков НОРМАЛЬНО, вглубь — тогда и не будешь никогда говорить "отличие в мелочах". Ох, ну юморасты!!


S>Бро, я уже почти 15 лет считай каждый день кодирую.


15 лет кодить и ни разу не попробовать что-то кроме c#, c++ или на чём вы там кодите? это для меня загадка. я хаскел уже даже забросить успел, а вы только спрашиваете как бы начать. и опыт у меня далеко не 15 лет.
---------------------

nothingness.space
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: alex_public  
Дата: 13.09.17 14:17
Оценка: +1
Здравствуйте, Shmj, Вы писали:

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

Как известно, определённый процент поступающих на компьютерные факультеты в принципе не способен осознать концепцию указателей (на мой взгляд подобным вообще нечего делать в индустрии). Это довольно известный факт и есть конкретные цифры. Но есть немного менее известный факт из той же серии, только наоборот — довольно небольшой процент студентов способен полноценно осознать и использовать метапрограммирование. Хотя концепция вроде как тривиальная, но почему-то нормально писать код, который занят "написание другого кода" получается у меньшинства в индустрии. Так вот советую тебе поразвлекаться в данной области. Язык тут можно выбрать по своему вкусу, т.к. сейчас во многих имеются элементы метапрограммирования. Главное только чтобы использование этих приёмов было общепринято в сообществе данного языка.
Re[2]: Haskell или что-то подобное -- что порекомендуете для ра
От: Vetal_ca Канада http://vetal.ca
Дата: 13.09.17 14:29
Оценка:
Здравствуйте, _ilya_, Вы писали:


__>1C. Развитие в ширь а не в глубину. ...

__>Развиваясь в ширь — получаешь знания из других отраслей а не просто кодинга.

Бухгалтерши!!!!
Re: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: novitk США  
Дата: 13.09.17 14:31
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Пока смотрю на Haskell. Вроде заметно отличается от C-подобных языков. Что скажете? Есть ли альтернативы?


Скала поддерживает все функциональные фишки Хаскеля (по крайне мере на уровне новичков). Хаскель элегантней, но Скала практичней из за библиотек/IDE и возможно проще в освоение из за гибридности.

ИМХО OCaml хуже скалы в смысле практичности. Lisp/Erlang — динамика и ты не получишь представления о современных изысканиях в системах типов.
Re[3]: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: novitk США  
Дата: 13.09.17 14:41
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>А так Скала во многом повторяет судьбу плюсов: полный разброд в стилях, репутация переусложненного языка, еще более тормозной компилятор.


+1, но ничего лучше для использования в коммерческой разработке в данный момент имхо нет. Продуктивность на скале намного выше по сравнению и с плюсами и с хаскелем.
Re[2]: Haskell или что-то подобное -- что порекомендуете для разгона мозга?
От: Shmj Ниоткуда  
Дата: 13.09.17 15:34
Оценка:
Здравствуйте, novitk, Вы писали:

N>Скала поддерживает все функциональные фишки Хаскеля (по крайне мере на уровне новичков). Хаскель элегантней, но Скала практичней из за библиотек/IDE и возможно проще в освоение из за гибридности.


В C# тоже есть функциональные фишки типа лямбд.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.