LINUX.ORG.RU

[Тред-совет] ЯП с динамической типизацией


0

6

Присматриваю для себя - чего бы нового изучить. Железная, непоколебимая статика - хорошо конечно, но начинает надоедать. Аккуратности кода уже вроде набрался, можно попробовать динамику. Вот и стою перед выбором - куда податься - Python, Ruby, JS или что там еще?

Итак, императивный, лаконичный, кроссплатформенный ЯП, с динамической типизацией, с развитой инфраструктурой, продукты которого жрут минимум памяти, адекватные по скорости, можно с вкраплениями функционального программирования, и совсем хорошо, если компилируемый - что посоветует многоуважаемый All?? (желательно с обоснованием)

Цель - создание серверных, десктопных и веб-приложений. Будет Ъ, если можно использовать один код для веб и десктопа (по типу Eclipse RAP/RCP)

Спасибо

★★★★★
Ответ на: комментарий от tailgunner

Весь наш ощущаемый мир - майя, илюзия.

Но это было 5 лет назад. Сейчас я просто считаю CL - самым удобным языком. И python c жабой напрмер в этой роли не вижу.

antares0 ★★★★
()
Ответ на: комментарий от antares0

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

...И ты повёлся на заявления ЛОРовских троллей, и выбрал ЛNСП.

А если бы ты выбрал тогда Java + {Groovy Jython whatever}, то справился бы быстрее и меньшими усилиями. Потому что тебе не пришлось бы бороться с косяками лиспа и недостатком качественных библиотек, зато на твоей стороне были бы богатейшая экосистема и статическая типизация. Тебе такое не приходило в голову?

Сейчас я просто считаю CL - самым удобным языком.


man синдром утёнка

И python c жабой напрмер в этой роли не вижу.


Разумеется, ведь ты не знаешь их.

anonymous
()
Ответ на: комментарий от anonymous

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

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

Разумеется, ведь ты не знаешь их.

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

Остальной бред уж извини комментировать не буду.

А да еще, для статической типизации есть haskell который хоть и не удобен, но много раз чище.

antares0 ★★★★
()
Ответ на: комментарий от antares0

Опечатка. Читать. И качественых библиотек к сожалению практически нет нигде.

antares0 ★★★★
()
Ответ на: комментарий от antares0

> К сожалению в лиспе нет косяков, по сравнению жабой он совершенен.

А вот den73 с тобой не согласен. Многократно. Сдаётся мне, что изо всей вышеописанной феерии у тебя на лиспе реально написана какая-нибудь мелочёвка типа rule engine, практически не взаимодействующая со внешним миром. Ну, давай, по-честному, сколько сотен строк там на лиспе всего?

> можно использовать жабовский стек, но брать на текущий момент там особенно нечего

Если тебе «нечего взять» из многотысячеклассового Java Runtime, то это ещё раз подтверждает, что твой лиспокод имеет весьма посредственное отношение к задачам реального мира.

anonymous
()
Ответ на: комментарий от anonymous

> А вот den73 с тобой не согласен. Многократно.

И я с ним тоже в многом. Когда он придет с манифестом «Все теперь жаба, я счастлив» позови.

на лиспе реально написана какая-нибудь мелочёвка типа rule enginе

А смысл именно эту мелочь писать на лиспе. Если б только это я б drools взял (наверное).На самом деле там пролог котырый компилируется лиспом. А так вобще лисп и нужен для взаимодействия с внешним имиром и пользователями. 442 000 стр. на лиспе. знаю надо было мнеше. Ну уж сколько получилось.

Если тебе «нечего взять» из многотысячеклассового Java Runtime,

Ну чтож ты скромный такой. Что там нужно брать такого. Ерунду типа http, xml, ini брать не вижу смысла его в лиспе хватает. IMAP каюсь навелосипедил. Чего я там еще забыл? С ДБ у меня случай специфический. Так что через FFI.

antares0 ★★★★
()
Ответ на: комментарий от anonymous

> Java

статическая типизация

Ну это так толсто, что даже тонко.

anonymous
()
Ответ на: комментарий от anonymous

Братюнь, а можно вкратце проблемы лиспа? Только конкретные, а не «динамическая типизация», «скобки» и т.п.

anonymous
()
Ответ на: комментарий от antares0

А у вас кстати нет потребности в удаленных лисп-(былдо)кодерах? В частности, для решения задач СППР. А то у знакомых есть заинтересованность и некоторый опыт:)

bik ★★
()

В порядке убывания clojure, python, scheme.

cab ★★★★
()
Ответ на: комментарий от dib2

Скажите честно - вам нужна динамическая серебряная пуля? Нет такой. Берите питон/груви/луа - что угодно, на самом деле.

bik ★★
()
Ответ на: комментарий от bik

>Скажите честно - вам нужна динамическая серебряная пуля? Нет такой. Берите питон/груви/луа - что угодно, на самом деле.

все что мне нужно - описано в топике. конкретных противоречий вы так и не указали. заказал книгу по Groovy, хотя в этом топике это уже мало кому интересно :)

dib2 ★★★★★
() автор топика
Ответ на: комментарий от dib2

> серверных, десктопных и веб-приложений. Будет Ъ, если можно использовать один код для веб и десктопа

А это что, если не противоречие? Вам нужен язык «для всего».

bik ★★
()
Ответ на: комментарий от dib2

Груви мало подходит под все описанные вами области применения. Лучше всего питон и немного луа. Но что значит «адекватно по скорости» тоже очень туманно. Между строк в вашем посте я прочитал - «хочу выучить только один новый язык, что писать на нем до конца жизни и ничего другого больше не знать». Наверное, я ошибся в интерпретации вашего сообщения :)

bik ★★
()
Ответ на: комментарий от dib2

> заказал книгу по Groovy

«Java не кроссплатформенна. Java - это платформпа» (с)

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

tailgunner ★★★★★
()
Ответ на: комментарий от shty

> у меня только один вопрос - нафига они на борту нужны? :)

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

kernel ★★☆
()
Ответ на: комментарий от tailgunner

это не облегчает их нагрузку.

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

shty ★★★★★
()
Ответ на: комментарий от kernel

> у меня только один вопрос - нафига они на борту нужны? :)

Что бы лишний видеопоток через спутник не гонять

Вы хотите сказать, что «ети янке» уже скайнет запилили? :) у меня стойкое ощущение что нифига не запилили, и сидит оператор на земле в палатке и смотрит в телевизор, а следовательно видеопоток идёт на землю, а уж через транспондер или через астрал - это детали

shty ★★★★★
()
Ответ на: комментарий от shty

> сидит оператор на земле в палатке и смотрит в телевизор

Оператор сидит в хорошо кондиционированном помещении на базе ВВС а континентальной Америке.

tailgunner ★★★★★
()
Ответ на: комментарий от shty

> Вы хотите сказать, что «ети янке» уже скайнет запилили? :) у меня

стойкое ощущение что нифига не запилили, и сидит оператор на земле в

палатке и смотрит в телевизор, а следовательно видеопоток идёт на


землю, а уж через транспондер или через астрал - это детали



Сидит и смотрит. Только вот как ты представляешь себе, например, стрельбу ракетой по быстро движущейся цели, по самолету? Для этого нужно захватить цель, сопровождать ее, и передать данные для стрельбы на головку самонаведения ракеты. А задержка даже из-за расстояния и тем более ретрансляторов весьма ощутимая. И ладно стрельбу, просто задачу сопровождения некой цели камерой. Что бы не человек в стиле «русская автоматика» вернеры крутил :D, а что бы беспилотник сам вертел камерой за неким подвижным объектом - танком, машиной там.

Затем, на беспилотнике не одна камера, и все они в достаточно высоком разрешении и с хорошей оптикой. Что, чтобы выискивать цели, нужно весь видеопоток от всех камер через спутники гнать?

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

kernel ★★☆
()
Ответ на: комментарий от bik

>А это что, если не противоречие? Вам нужен язык «для всего».

ну отнюдь. я же не назвал все те юзкейсы которые перечислил товарищ выше по треду?

Как минимум Python, Ruby, JS и Groovy дают возможность писать и серверные, и десктопные, и веб-приложения. Эти языки противоречивы?

dib2 ★★★★★
() автор топика
Ответ на: комментарий от bik

>Груви мало подходит под все описанные вами области применения.

не забывай добавлять «ИМХО» :)

Лучше всего питон и немного луа


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

Но что значит «адекватно по скорости» тоже очень туманно


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

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


да, ошибся. как раз наоборот, захотелось сбросить с себя закостенелость, оглянуться вокруг, и попытаться не зацикливаться более.

dib2 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

> А веб, о котором ТС упомянул, по определению I/O-bound.

гы-гы

уж *точно* не по определению

если апач+пхп+мускул+екзим+байнд успешно работают, занимая 300М из 512М, то компилятор явы на хелловорде на оставшихся 200М просто вылетает по ООМ, в то время как жцц (и хаскель кстати :-) успешно компилит хелловорды и не только (и да, я специально для проверки создавал прожку для чтения-записи 200М памяти)

емнип это потому, что openVZ контейнер не преполагает свопа и не позволяет оверкоммит памяти

теперь рассмотрим пофикшенную версию:

А веб, о котором ТС упомянул, в основном I/O-bound.

в твое понятие «I/O-bound» входят тормоза от ожидание обмена проца с оперативкой из-за излишне большого объема объектов или непоследовательного расположения их в памяти?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> если апач+пхп+мускул+екзим+байнд успешно работают, занимая 300М из 512М, то компилятор явы на хелловорде на оставшихся 200М просто вылетает по ООМ

Это очень печально, очень. Правда, непонятно, какое отношение имеет компилятор Явы к веб-приложениям.

теперь рассмотрим пофикшенную версию:

...а лучше не станем ее рассматривать, потому что у тебя какое-то свое определение термина «I/O-bound».

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Это очень печально, очень. Правда, непонятно, какое отношение имеет компилятор Явы к веб-приложениям.

компилятор явы написан на яве и является примером приложения, примерно равноценного по сложности скажем мускулю

а лучше не станем ее рассматривать, потому что у тебя какое-то свое определение термина «I/O-bound».

memory bound у нас надеюсь определено одинаково? (я понимаю под этим ограничение объемом памяти, а не ее скоростью)

а твое, отнюдь не очевидное для меня определение термина «I/O-bound», я и пытаюсь безуспешно (пока что) выяснить

http://ru.wikipedia.org/wiki/Список_пропускных_способностей_интерфейсов_перед...

сейчас скорость последовательного доступа к памяти ddr3 примерно равна скорости pci-e 3, примерно так видимо и дальше будет

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от tailgunner

я пока что понимаю «I/O-bound» в вебе озонов-амазонов вот так:

допустим, имеется 1М товаров с 100КБ картинок на каждый, и еще 10М юзеров с 10КБ данных на каждого — все вместе 200ГБ

если ты реализуешь это в 1 сервере с 32ГБ оперативы и 256ГБ ссд, то я соглашусь, что эта фигня у тебя может быть «I/O-bound» в том смысле, в котором им прикрываются адепты тормозных недоязыков

если это у тебя будет 8 серверов с 32ГБ оперативы, то определение «I/O-bound» должно быть у тебя явно чем-то похоже на мое (где скорость этого самого I/O порядка 25ГБ/сек)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от tailgunner

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

JVM не была решающей в выборе. Думаю тут скорее сработало «человек покупает глазами» - увидел родной С-подобный синтаксис, и сразу, на автомате нарисовал жирный плюсик :)
хотя от питона я тоже не отказывался, хочу попробовать его в рамках http://developer.ubuntu.com/

dib2 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Оператор сидит в хорошо кондиционированном помещении на базе ВВС а континентальной Америке.

да пофиг где он там сидит, главное что сидит

shty ★★★★★
()
Ответ на: комментарий от kernel

Сидит и смотрит.

значит на передаче видеопотока ты сэкономить уже не сможешь :)

Только вот как ты представляешь себе, например, стрельбу ракетой по быстро движущейся цели, по самолету? Для этого нужно захватить цель, сопровождать ее,

я прекрасно представляю

и передать данные для стрельбы на головку самонаведения ракеты.

а вот ты совсем не представляешь

shty ★★★★★
()
Ответ на: комментарий от kernel

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

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

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

если всё равно в кого стрелять, можно и так передавать

прикинь тебя туда засунуть, дать тебе фотку бенладена, бинокль и отправить над пакистаном полетать на высоте 1 км - у тебя все бенладены будут

shty ★★★★★
()
Ответ на: комментарий от shty

>> Оператор сидит в хорошо кондиционированном помещении на базе ВВС а континентальной Америке.

да пофиг где он там сидит

Насколько я понимаю, для того, чтобы доставить оператору в Штаты видеопоток, нужны спутниковые каналы. Так что kernel правильно сказал.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

читаем внимательно: «а следовательно видеопоток идёт на землю, а уж через транспондер или через астрал - это детали»

обсуждалась гипотетическая экономия на передаче потока, её не будет, что сам кернел чуть попозже и признал

shty ★★★★★
()
Ответ на: комментарий от shty

> читаем внимательно: «а следовательно видеопоток идёт на землю, а уж через транспондер или через астрал - это детали»

Читаем, да: «чтобы лишний видеопоток через спутник не гонять. Сейчас это одно из самых серьезных ограничений применимости бпла». Насчет этого нет возражений? Ограничение нужно снимать. То, что ты говоришь «ааа они примут чучелко за Бен Ладена!!11», конечно, мощное возражение, но не отменяет необходимости решения задачи.

tailgunner ★★★★★
()
Ответ на: комментарий от shty

значит на передаче видеопотока ты сэкономить уже не сможешь :)

Весь ли видеопоток пойдёт оператору или схематическая выжимка?

Xenesz ★★★★
()
Ответ на: комментарий от tailgunner

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

есть, суть ограничения не пояснишь?

То, что ты говоришь «ааа они примут чучелко за Бен Ладена!!11», конечно, мощное возражение, но не отменяет необходимости решения задачи.

ну так реши (это не персонально Вам) задачу, и поговорим про снятие ограничений

shty ★★★★★
()
Ответ на: комментарий от Xenesz

Весь ли видеопоток пойдёт оператору или схематическая выжимка?

«схематическая выжимка» - это что?

shty ★★★★★
()
Ответ на: комментарий от shty

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

Xenesz ★★★★
()
Ответ на: комментарий от shty

> значит на передаче видеопотока ты сэкономить уже не сможешь :)

Одного видеопотока, в момент просмотра оператором, не смогу. Пока беспилотник ищет потенциальные цели и шарит *несколькими камерами* уже могу сэкономить несколько видеопотоков. Опять же пока оператор смотрит на одну камеру - другие продолжают искать - экономия.

а вот ты совсем не представляешь


Понтов только вот не надо.

kernel ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.