LINUX.ORG.RU

Преемники царей дня сегодняшнего

 ,


0

7

Мир не стоит на месте, как отправились в могилу гиганты прошлого (Fortran, COBOL, Lisp), так уйдут в тень и текущие лидеры индустрии. Дабы не оказаться вместе с ними на краю пропасти, разработчикам необходимо начать приглядываться к новым языкам и искать среди них замены текущим уже сейчас.

Итак, LOR, давай думать, к чему готовиться?
Сфера: Сегодня -> Завтра

Системное программирование: C -> D // ОС, драйверы, утилиты
Язык общего назначения: Java -> Go // прикладное ПО
Скриптовый язык: Perl -> Python // наколенное ПО
Web: PHP -> Go // сайты, web-приложения

Если потребуется, добавляйте свои пункты.
Рынок мобильных приложений и без того слишком молод, опустим.
Пожалуйста, поменьше глупости вида ALL -> Haskell.

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

Оптимизации требует там, где на перечисленных всё на дефолте прекрасно работает. поставить bitrix проект на ubuntu и centos 6.5. Например наша площадка, которая чисто код(+интерфейс) без файлов и баз весит почти 1,3 гб, на убунте жрёт почти 2 гб оперативы, а на centos 6.5 1.2. Потому что в бубунте надо php fpm поднастроить, лишние процессы убрать у апача.
Понимаю оптимизировать, когда уже крупные базы данных, большая посещаемость, но под сайт визитку делать оптимизацию, вместо того, чтобы на дефолте за 3 минуты всё сделать, это бред.

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

Приличные люди похапе не обмазываются.

anonymous
()

Rust, конечно, не вытеснит Си или C++ и вряд ли станет главным системным языком. Но, думаю, для него вполне найдется место и какую-то, пускай и не очень большую, часть пользователей у Си и плюсов он отберет. В частности, в среде разработчиков игр должны бы обратить на него внимание, особенно учитывая очень теплое отношение к построению велосипедов в этой сфере - тонны унаследованного кода тут не так важны.

Вот, например, почему библиотека chipmunk-physics написана на Си:

https://chipmunk-physics.net/release/ChipmunkLatest-Docs/#Intro-WhyC

Why a C Library?

A lot of people ask me why I wrote Chipmunk2D in C instead of <pick_your_favorite_language_here>. I tend to get really excited about different programming languages. Depending on the month, take your pick of Scheme, OCaml, Ruby, Objective-C, ooc, Lua, Io… the list goes on. The one common factor between most any language is that they are usually dead simple to make bindings to C code. I also wanted Chipmunk2D to be fast, portable, easy to optimize and easy to debug. Writing Chipmunk2D in C made it simpler to achieve all of those goals.

- не вижу, почему бы тут не подошел Rust.

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

Haskell это на сегодня уже мейнстрим среди маргинальщины

Не благодари за фикс.

как с просто ФП-языками было 25 лет назад

Но ведь ФП-языки за 25 лет не противопоставили ничего «мейнстриму», в результате чего потерпели заслуженное фиаско.

*Профессиональный Haskell-программист*

Сперва хотел было написать, что попахивает оксюмороном. Но потом подумал, что уличные попрошайки, скоморохи, юродивые тоже могут быть «профессиональными». Так что — почему бы и нет.

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

За тебя? Не, не обидно. Даже радостно, что ты и к старости будешь таким же нищим и ничтожным, как сейчас. Хорошо, когда плохим людям плохо!

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

Ну как вариант, тоже вполне хороший вариант и практичный. Я раскритиковал совсем тупые советы вроде C++ -> D, который никто не использовал, не использует и не будет использовать, хотя ему уже куча лет

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

C->Rust Java->Java

2014: C->Rust, Java 7 -> Java 8

2016: Rust -> Crust, Java 8 -> Java 9

2020: Crust -> Trust, Java 9 -> Java 10

2025: Trust -> Shmust, Java 10 -> Java 11

2030: жители Земли превращаются в чистую энергию и... Java 11 -> Java 12

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

The one common factor between most any language is that they are usually dead simple to make bindings to C code.

не вижу, почему бы тут не подошел Rust

ты можешь запустить из программы на OCaml библиотеку на Rust?

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

ты можешь запустить из программы на OCaml библиотеку на Rust?

Какие проблемы ты предвидишь? Rust поддерживает C ABI.

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

Rust поддерживает C ABI.

Ну вот смотрю библиотеку: https://github.com/PistonDevelopers/piston

Как мне её использовать из Си (для простоты, чтобы OCaml-специфичные вещи не трогать)? Хотя бы что написать в piston.h чтобы использовать

let mut window = WindowSDL2::new(
        opengl,
        WindowSettings {
            title: "Image".to_string(),
            size: [300, 300],
            fullscreen: false,
            exit_on_esc: true,
            samples: 0,
        }
    );
?

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

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

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

Как мне её использовать из Си

Вопрос был «возможно ли это». Ответ - «да, это одна из целей проектирования языка». Если проблема в отсутствии инструмента для генерации заголовочных файлов Си, здесь я помочь не могу. Но предъявлять такие претензии языку, который формально еще не существует, слегка преждевременно.

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

Если проблема в отсутствии инструмента для генерации заголовочных файлов Си

При чём тут инструмент? Я не могу в Си написать WindowSDL2::new(...), не могу написать opengl = piston::shader_version::opengl::OpenGL_3_2. А значит ни один язык, который превосходно работает с Сишными библиотеками (питон, перл, джава, ... всё что угодно) не сможет использовать библиотеку на Rust. Поэтому Rust может заменит C++, но не С. Да и C++. Простого аналога extern «C» я тоже не увидел.

А поддержка C ABI для использования библиотек на C есть в любом нормальном языке.

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

При чём тут инструмент?

Вот при этом:

monk> Хотя бы что написать в piston.h

чтобы руками не писать.

Я не могу в Си написать WindowSDL2::new(...), не могу написать opengl = piston::shader_version::opengl::OpenGL_3_2.

А в Python не можешь написать scanf(«%d», &val).

А значит ни один язык, который превосходно работает с Сишными библиотеками (питон, перл, джава, ... всё что угодно) не сможет использовать библиотеку на Rust.

Да? Окей.

Простого аналога extern «C» я тоже не увидел.

А пытался?

extern "C" fn callback(target: *c_void) -> *c_void;
tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Ответ - «да, это одна из целей проектирования языка»

Не похоже. Сейчас чтобы использовать C ABI приходится выкинуть (почти) весь Rust:

#[crate_type = "lib"];
#[no_std];
#[allow(ctypes)];

#[no_mangle]
monk ★★★★★
()
Ответ на: комментарий от tailgunner

А в Python не можешь написать scanf(«%d», &val)

Могу.

>>> from ctypes import *
>>> libc = CDLL("libc.so.6")
>>> val = c_int()
>>> libc.scanf("%d", byref(val))
123
1
>>> val
c_long(123)

Поэтому и спрашиваю, что мне написать в питоне (например), если есть piston.so на Rust, из которого надо вызвать WindowSDL2::new.

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

extern «C» fn callback(target: *c_void) -> *c_void;

Это не тот extern. Это наоборот подразумевает, что где-то на Си написан callback. http://doc.rust-lang.org/guide-ffi.html А нужно наоборот. Есть pub fn compress(src: &[u8]) -> Vec<u8> { ... }. Как его вызвать из Си?

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

А в Python не можешь написать scanf(«%d», &val)

Могу. libc.scanf(«%d», byref(val))

То есть scanf(«%d», &val) написать ты не можешь - приходится использовать синтаксис Python и слой трансляции. А в Cи не сможешь WindowSDL2::new(...) - придется использовать синтаксис Си и специально помеченные Rust-функции.

Это не тот extern. Это наоборот подразумевает, что где-то на Си написан callback

Да? Вот текст callback из документа по ссылке:

extern "C" fn callback(target: *mut RustObject, a:i32) {
    println!("I'm called from C with value {0}", a);
    unsafe {
        // Update the value in RustObject with the value received from the callback
        (*target).a = a;
    }
}

Не очень похоже на Си, хотя тебе виднее.

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

синтаксис Си и специально помеченные Rust-функции

Так в том то и дело, что из синтаксиса Си нельзя вызвать функцию из нормальной библиотеки Rust (без no_std и no_mangle).

Да? Вот текст callback из документа по ссылке.

Такое я на любом языке напишу. В том же питоне:

def callback(obj,a):
  obj[a] = a

CFUNC = CFUNCTYPE(POINTER(c_int), c_int)
c_callback = CFUNC(callback)

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

Резюмирую: использовать библиотеку на Rust из любого другого языка невозможно. При большом желании (и изначально принятом решении) можно писать на Си с синтаксисом Rust, но при этом не будет половины синтаксиса и стандартной библиотеки.

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

Резюмирую: использовать библиотеку на Rust из любого другого языка невозможно.

Странно, если ты в самом деле так думаешь, но это не проблемы Rust.

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

Странно, если ты в самом деле так думаешь, но это не проблемы Rust.

Изначально был вопрос: Заменит ли Rust язык Си в области написания библиотек общего назначения.

Ответ: нет, потому что библиотеку на Rust нигде нельзя использовать (в отличие от библиотеки на Си).

При чём тут проблемы? Это просто не его область применения.

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

Изначально был вопрос: Заменит ли Rust язык Си в области написания библиотек общего назначения.

Ок.

Ответ: нет, потому что библиотеку на Rust нигде нельзя использовать (в отличие от библиотеки на Си).

Ответ может быть верным, обоснование является неверным.

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

Советским, видимо, невдомёк, что термин «профессиональный» значит лишь «работаю и получаю за это деньги».

Но ведь ФП-языки за 25 лет не противопоставили ничего «мейнстриму»

А зачем ФП что-то противопоставлять мейнстриму? ФП всем пищу для ума даёт. Вся теория языков программирования делается ФП-шниками или людьми с ФП-шным бекграундом (даже если приходится заниматься формальными исследованиями прикладных быдлоязычков). Орды быдлокодеров простейшие вещи из функциональщины ещё долгие годы переваривать будут. А академики идут дальше.

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

К счастью в основном скала состоит из фич, а не костылей. Так что ее обьемность скорее плюс - фичи же.

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

там менеджеры(реально организаторы производства ака жрецы) на отличненько логистику.

ручной ручному рознь.

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

ась?

разделение на науку и инженерию той области(деятельности) что позволяет с пониманием использовать природу лишь удобство эпохи.

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

Наука не нужна, сделали же пирамиды при помощи ручного труда.

А при чём здесь «теория языков программирования»? Это такая же «наука», как теория торсионных полей Шипова-Акимова, «Новая хронология» Фоменко, теория эфира, теория теплорода и прочий крэп.

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

Теорию теплорода убери из списка, она вполне научна, и жива до сих пор, только терминология поменялась. Классическая (феноменологическая) термодинамика это оно и есть.

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

по утверждению Степанова

программирование (в том числе и обезьянкикодерочки) это математика как есть.

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

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

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

Сомнительно.

Математик работает с декларативными моделями. А типичный программист — с императивным алгоритмом.

Ну и кроме того, в программировании обычно фигирирует математика не как аналитический аппарат, а лишь прикладные выводы из него. ADT для выполнения операций над матрицами — это не линейная алгебра. Линейная алгебра — это теоретическое обоснование того, почему такой ADT нам вообще потребуется для решения задачи.

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

Умножение в столбик - тоже математика.

anonymous
()

Сфера: Завтра -> Послезавтра

Системное программирование: D -> C // ОС, драйверы, утилиты
Язык общего назначения: Go -> Java // прикладное ПО
Скриптовый язык: Python -> Perl // наколенное ПО
Web: Go -> PHP/Java // сайты, web-приложения

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.