LINUX.ORG.RU
ФорумTalks

Язык программирования будущего

 , ,


0

2

Давайте повангуем. Имеется в виду не какой-то сферический язык в вакууме, а уже существующий. Какой язык вытеснит в производстве (или хотя бы встанет в один ряд с) C++, C#, Java? Мне кажется, что это будет Go. С учётом гегемонии Корпорации Добра такой исход вполне вероятен.

Дискасс.

★★★★★

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

Конкурренси — это не плюшка, а целый архитектурный паттерн.

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

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

Конкурренси - это многопоточность? Типа встроенные мьютексы, фьютексы, так? Если так, то явно вызовы идут с glibc, так? А если это так, то зачем оно нужно, когда есть boost и свои мозги/идеи и т.п.? Может эта конкурренси мне будет мешать или не давать делать так, как я хочу?

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

Ты кстати пробовал на нём писать хотя бы хелловорлд?

а что го как язык такого предлагает чтобы я им заинтересовался, простите?

shty ★★★★★
()
Последнее исправление: shty (всего исправлений: 1)

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

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

Конкурренси - это многопоточность?

Нет. Конкурренси это не многопоточность. Многопоточность — оптимизация, направленная на увеличение скорости выполнения приложения на машинках с SMP, а конкурренси — архитектура, когда несколько частей программы выполняются одновременно.

Конкурренси упрощает введение многопоточности (в случае с го — флагом компилятора), но проводить знак равенства нельзя.

встроенные мьютексы, фьютексы

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

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

а что го как язык такого предлагает чтобы я им заинтересовался, простите?

Ну например кривую обучения сравнимую с питоновской. Ну и чем больше инструментов знаешь — тем ценнее ты как специалист.

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

Гы, сына, лол.

Читанул вики. Увы и ах, товарищь Марк Лемман уже давно запилил это в перле: http://search.cpan.org/perldoc?Coro

И могу сказать, что увы и ах, но иногда нужно либо форкаться, либо запускать нормальные потоки через clone. А однопроцессорные штуки, даже с коросами ведут в настоящий момент в одно направление - аналоги эрланга, которые на перле также запилены: http://search.cpan.org/perldoc?AnyEvent::MP

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

Может эта конкурренси мне будет мешать или не давать делать так, как я хочу?

Чтобы её использовать, её надо использовать явно.

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

Необязательно быть специалистом, чтобы понимать, что чем ниже порог вхождения, тем распространённее язык. Надо быть идиотом, чтобы этого не понимать.

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

В го синтаксис поприятнее, чем в перле. И язык — привычная всем c-like императивщина, а не нечто функциональное как ерланг.

PolarFox ★★★★★
()

мдя :/ с такими 'кажется' надо к психиатру

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

Иди читай вики, тебе сказано.

А может это ты почитаешь или качнешь исходники и посмотришь на сишный код, где вызовы одни и теже?

gh0stwizard ★★★★★
()

Будут ява, си и верилог

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

А может это ты почитаешь или качнешь исходники и посмотришь

Нет. Ты либо почитаешь о CSP, либо умрешь дураком.

сишный код, где вызовы одни и теже?

Одни и те же с чем? Какие исходники я должен скачать для сравнения?

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

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

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

Только вот в других языках нет клёвого оператора go (go fuckYourSelf() просто запустит гоурутину) и каналов (с клёвым оператором select).

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

Ты кстати пробовал на нём писать хотя бы хелловорлд?

Нету генериков(разрабы говорят, что возможно появятся).
Нету конструкции, которая бы соответствовала Сишному union.
Ну и отсутствие некоторых других плюшек заставляет дублировать код.

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

Да с тобой вообще не о чем разговаривать.

Тебе вообще не о чем разговаривать.

Открой вики http://ru.wikipedia.org/wiki/Сопрограмма почитай и удавись.

Я знал о том, что такое сопрограмма, еще до твоего рождения. Только модель Go - это не сопрограммы, а CSP, как уже сказано.

tailgunner ★★★★★
()

Нужно смотреть на язык который сейчас люди воспринимают как язык для быдлокодеров. С++ раньше был языком для неосиляторов С, С# и Java были для индусов неосиляторов С++, следующий язык будет для тех кого назовут неосиляторами C# и Java.

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

Нету генериков

А что это такое? Я серьёзно.

Нету конструкции, которая бы соответствовала Сишному union.

Если нужен именно сишный union, можно взять си. Нужен контекст, в котором его нужно было бы применить в го, возможно, для этого есть лучший путь.

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

А присутствие некоторых других позволяет его сокращать.

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

Необязательно быть специалистом, чтобы понимать, что чем ниже порог вхождения, тем распространённее язык. Надо быть идиотом, чтобы этого не понимать.

Например, бейсик.

eugeno ★★★★★
() автор топика

[Машина времени ЛОРа]

10 лет назад наиболее буйные поциенты ЛОРа с пеной у рта доказывали, что функциональные язычки программирования в 2010 году вытеснят Джаву и подобную «императивщину».

Сегодня 2012 год...

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

Я знал о том, что такое сопрограмма, еще до твоего рождения. Только модель Go - это не сопрограммы, а CSP, как уже сказано.

А теперь «папка», расскажи как это реализовано в Go, случаем не через pthread_create ?

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

А теперь «папка», расскажи как это реализовано в Go, случаем не через pthread_create ?

Вроде бы нет. Ну и среда спокойно переваривает несколько сотен тысяч таких потоков.

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

а что го как язык такого предлагает чтобы я им заинтересовался, простите?

Ну например кривую обучения сравнимую с питоновской.

этого мало для того чтобы языку «зохавать» мир, совсем мало, в этом смысле есть питон, у которого сравнимая кривая обучения и порсто дофигища батареек, ну и какое тут преимущество у «го»?

Ну и чем больше инструментов знаешь — тем ценнее ты как специалист.

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

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

Вроде бы нет.

Вот про это я и спрашивал, когда задавал вопрос про уточнение о «конкуренси». Если там теже самые вызовы pthread/clone из glibc, то в Go никакой фичастости нет, ибо даже в питоне их реализовали: http://code.google.com/p/pycsp/

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

По сравнению с питоном? Го банально быстрее работает. Батареек мало, но те что идут вместе с компилятором — выполнены вполне на уровне тех же самых питоновских.

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

И в перле такое тоже возможно: http://search.cpan.org/perldoc?Coro::Channel

use Coro;

   my $calculate = new Coro::Channel;
   my $result    = new Coro::Channel;

   async {
      # endless loop
      while () {
         my $num = $calculate->get; # read a number
         $num **= 2; # square it
         $result->put ($num); # put the result into the result queue
      }
   };

   for (1, 2, 5, 10, 77) {
      $calculate->put ($_);
      print "$_ ** 2 = ", $result->get, "\n";
   }

http://search.cpan.org/~mlehmann/Coro-6.08/Coro/Intro.pod

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

Необязательно быть специалистом, чтобы понимать, что чем ниже порог вхождения, тем распространённее язык...

...среди макак

как уровень вхождения связан с «господством в будущем»?

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

Я знал о том, что такое сопрограмма, еще до твоего рождения. Только модель Go - это не сопрограммы, а CSP, как уже сказано.

А теперь «папка», расскажи как это реализовано в Go, случаем не через pthread_create ?

Сейчас - через. И? Напомню твои слова:

gh0stwizard> однопроцессорные штуки, даже с коросами

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

А что это такое? Я серьёзно.

http://en.wikipedia.org/wiki/Generics_in_Java :), в место чего сейчас пишется interface{}

А присутствие некоторых других позволяет его сокращать.

по сравнению со многими современными языками — нет.
А все фишки го, как-то каналы и прочая подсоединяются в виде библиотек. (для перла уже приводили)

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

И? Напомню твои слова

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

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

Опять же, конечно, удобнее чем на Сях писать, но судя по бенчмаркам go отстаёт по скорости исполнения от с, с++ и жавы.

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

http://en.wikipedia.org/wiki/Generics_in_Java

Если их не реализовали, по крайней мере сразу, значит не очень хотели.

по сравнению со многими современными языками — нет.

А как же объявление переменных через := (в компилируемых языках я такого особо не видел)? Implicit интерфейсы? Код на го в целом выглядит чище и компактнее аналогичного на C.

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

Ну так вот, я и спрашиваю в Go я могу написать программу, которая заюзает все ядра и процессоры

Да, хотя пока нет смысла. Но:

gh0stwizard> Типа встроенные мьютексы, фьютексы, так?

не так, епт. Прочитай уже про CSP.

tailgunner ★★★★★
()

Язык программирования будущего

У программирования нет будущего.

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

среди макак

Илитка в треде.

как уровень вхождения связан с «господством в будущем»?

Напрямую. Это в восьмидесятых красноглазые зубры составляли большинство. Чем дальше, тем больше процент казуалов, а им эти сишечки в пипюн не упёрлись.

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

Мне и так все ясно. Ибо есть де-факто стандарты, которые уже прошли временем и Go ничего нового не внес. А вообще прогони свою программу на Go через strace и посмотри на вызовы, уверен, что тот же message proccessing сделан через фьютексы в определенных случаях.

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

По сравнению с питоном? Го банально быстрее работает.

во-первых «быстрее работает» - это не метрика для всего подряд, это то что __иногда__ нужно

во-вторых у питона и на этот случай есть батарейки, качественные и разнообразные

это не киллер-фича

shty ★★★★★
()

Какой язык вытеснит в производстве

если всё пойдёт как и идёт, то это будет Китайский :) А язык программирования N-ного уровня будет зваться «Белый лотос в звёздной пыли». Незнаю как оно должно звучать в оргигинале, но факт, что половина ЛОРа будет переться от фишечек, треть упираться до пены в старый-добрый-питон/руби/c-за-решёткой, прочим будет параллельно по разным причинам.

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

Go ничего нового не внес

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

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

ещё, кстати вспомнил такую фигню. Ну то что там очень жёстко требуют приводить типы — эт ладно. А вот, например, их фича с функциями возвращающими несколько значений. Допустим, функция возвращает 2е float64, а мне нужно их сконвертить в float32. Можно ли это как-то компактно написать? Я так понял, что нет. :) Т.е. через объявление 2х временных переменных получается только.

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