LINUX.ORG.RU

Язык будущего?

 


0

3

На каком языке будут писать в будущем? Или хоть какая парадигма будет использоваться? ООП? функциональщина? Я просто учу Си по большей части, ну изредка джава или с++ и мне кажется что это слишком «низкоуровневые» языки. Мне стоит перейти на что-то более «хипстерское» или же все нормально, и по мере развития мира в С++ добавят все что надо?

★★★

Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от next_time

болван, ты, Петька. открою секрет: map знать не знает и знать не должен откуда берутся значения ключей. в нем хранятся _сокеты_, откуда ему знать tcp-сокет это или unix-domain-сокет?

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

map знать не знает и знать не должен откуда берутся значения ключей

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

и то не «значения ключей», а «значения, соответствующие ключам». значения самих ключей, собственно в map и содержатся.

next_time ★★★★★
()
Последнее исправление: next_time (всего исправлений: 1)
Ответ на: комментарий от anonymous

но уж если вам совсем произвольную функцию подавай, тогда можно так:

return socket_map_fetch(map, key, &create_new_socket);

или так: return socket_map_fetch<create_new_socket>(map, key);

в зависимости, что лучше для производительности.

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

ну вот видишь, приходится извращаться и тем или иным способом передавать в map генератор. а на том же ocaml'e (со строгим порядком вычисления) все решалось бы элементарно:

Some (lazy expensive_f()) |> Map.fetch map key

при том что expensive_f() может иметь сайд-эффекты (которые не учитывал код с хабра). в общем, советую глянуть хотябы на ocaml - по производительности он идет ноздря в ноздрю с C++, а по фичастости может потягаться с хаскелом.

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

OCaml, цуко вещь. Я правда помню пытался на нем диспетчер событий сделать с многопоточной обработкой и ниасилил. Пришлось на Asio.

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

А на сколько он вообще шевелится? Я чота думал, что он скорее мертв, чем жив и пользуется только для всяких пискомерок в бенчах.

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

А на сколько он вообще шевелится? Я чота думал, что он скорее мертв, чем жив и пользуется только для всяких пискомерок в бенчах.

шевелится. OPAM обновляется, фреймворки-киллер-фичи активно пилятся.

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

OCaml, цуко вещь. Я правда помню пытался на нем диспетчер событий сделать с многопоточной обработкой и ниасилил. Пришлось на Asio.

на Lwt или Async? первое время асинк просто вышибал мозг своими концепциями deferred'ов - например, такой код на нем абсолютно рабочий и шустрый (псевдокод):

handle(client) ->
  (*** some work ***)
  handle(client)

accept_on(sock) ->
    accepted = Socket.accept sock
    handle accepted
    accept_on sock

как только понимаешь его фишку,в язык влюбляешься просто. чего только стоит изкоробочная возможность допиливать синтаксис всякими экстеншионами (sexp, lwt, lazy и пр.), а всякие парсеры бинарных протоколов писать - просто сказка. теперь прибавь сюда скорость близкую к крестам. так то.

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

само собой. автокомплита-то нет.

В редакторе? В RubyMine есть, в других иде тоже, наверно, это же блин не нано технологии. У тебя какое то тупое сравнение яп.

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

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

нет, не вижу. socket_map[key]; полностью решает вопрос путём автоматического использования конструкторов.

в общем, советую глянуть хотябы на ocaml

уже давно. не нашёл там статических функций и переменных и забил.

по производительности он идет ноздря в ноздрю с C++

бенчмарки иное говорят.

все решалось бы элементарно:

Some (lazy expensive_f()) |> Map.fetch map key

лол. с передачей того же генератора, ещё и строка в вашем «элементарно» длиннее.

сравните map.fetch<expensive_f>(key); с той спагеттиной, которою вы написали.

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

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

next_time ★★★★★
()

АСМ, С и плюсы знать и уметь использовать нужно в любом случае. Эти знания и умения на несколько порядков облегчат тебе разбрательства в других ЯП. Ну и на вопросы, типа «почему мой код на яве\яваскрипте\перле\питоне\подставьлюбойяп жрет тонны памяти» ты сможешь, в основном, отвечать себе сам, и легче будут искаться баги, и отладчики перестанут пугать после того как мемори лики научишься искать. В общем - это те ЯП, которые должен знать и уметь любой, уважающий себя, программист.

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

Тебя беспокоит пых? Ты хочешь об этом поговорить?

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

Как хорошо что еще есть такие аноны. Снимаю перед тобой шляпу.

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

Ты прав, но... Это как... Ну человек у тебя спрашивает: «Я хочу стать журналистом. Какой язык мне учить чтобы меня понимали максимальное количество людей? Английский?». А ты ему начинаешь рассказывать что журналистов в вакууме не бывает. Бывают вот такие-такие-сякие журналисты, а он еще толком не умеет мысли на бумаге записывать.

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

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

gear ★★★
()
Последнее исправление: gear (всего исправлений: 2)
Ответ на: комментарий от thesame

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

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

ставит крест на быстром наборе кода.

наоборот.

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

сравните map.fetch<expensive_f>(key); с той спагеттиной, которою вы написали.

я там просто перестарался, выбирайте:

Map.fetch map key (lazy expensive ())

let (>?) m k = Map.fetch m k
let ($) f x = lazy (x ()) |> f

...

map >? key $ expensive_f
anonymous
()
Ответ на: комментарий от anonymous

Map.fetch map key (lazy expensive ())

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

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

на Lwt или Async?

Да, на асинк. Но ниасилил не поэтому. А потому что он тогда в оффтопиком не дружил нормально. Не знаю поменялось ли сейчас что. OCamlPro говорят годный и есть 86 и 64.

А какая сейчас годная и правильная книга по окамлу?

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

А какая сейчас годная и правильная книга по окамлу?

Real World OCaml, 2013.

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