Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Mamut, Вы писали:
M>>Ну и, мне кажется, будут облегчаться принципы и приемы разработки многопоточных приложений (возможно — в сторону чего-то, похожего на Эрланг).
VD>Эрэнгом мы займемся после интеграции Немерле в Студию. Точнее попробуем реализовать похожую на него идеологию параллелизма. Правда для гибридных языков наверно вместо процесса разумнее будет использовать идеологию активных объектов.
Простите, немого оффтопик. А что у него за за идеология параллелизма? (если есть нормальная ссылка, на русском или английском)
P.S. Если я правильно понимаю, идеология активных объектов подразумевает 1 поток на 1 объект. Это неудобно: фактически в этой идеологии перекрещиваются архитектура и совершенно технические особенности распараллеливания — это мешает. Лучше дать возможность определять зависимость по данным, может быть даже динамически. Т.е. что бы объекты сами определяли, что необходимо для выполнения их метода и автоматически ждали (и определяли) нужные события.
Здравствуйте, ValeraI, Вы писали:
VI>Не ради флейма, а ради выслушивания разных мнений VI>Как Вы считаете, какой язык программирования будет самым востребованным через несколько лет?
Языко-ориентированное программирование выглядит многообещающе. В то же время, приход таких языков сведет к минимуму потребность в програмиистах: значительная часть работы перейдет к экспертам в предметной области.
Одна из тем, которая постоянно всплывает в рассуждениях о языкоориентированном программировании — дать возможность непрофессионалам самим писать код. Всевозможные эксперты в различных предметных областях могли бы программировать, используя соответствующие DSL.
Впрочем, пока денежные монстры не уделят ЯОП должного внимания, рядовому программисту преждевременно дрожать за свое место.
На мой взгляд востребованность языков программирования через пару лет не потерпит каких-либо изменений. Однако сместится на требования, к этим языкам. Кроме DSL и метапропрограммирования, сейчас интерес представляет собой распараллеливание. Герб Саттер, например, активно работает для продвижения этих механизмов в стандарт С++. Вот тут можно посмотреть/послушать его лекцию на эту тему: The Free Lunch Is Over
Здравствуйте, ValeraI, Вы писали:
VI>Не ради флейма, а ради выслушивания разных мнений
VI>Как Вы считаете, какой язык программирования будет самым востребованным через несколько лет?
Гибридные функционально-ОО языки, с возможностями расширения (например, Nemerle,Scala).
Писал также здесь: Re[3]: Почему у Nemerle есть будущее :)
Ну и я думаю Java никуда не денется, ибо на ней уже очень много написано.
VI>Как Вы считаете программисты знающие какой язык (языки) программирования будут самыми высокооплачевыеми через несколько лет?
От языка не зависит. Рядовые программисты вообще не высокооплачиваемые. Высокооплачиваемые — грамотные архитекторы, создатели алгоритмов
и специалисты в тех предметных областях, в которые идут активные инвестиции,(финансы, биотех) с навыками программирования.
Язык там уже второстепенную роль играет.
Здравствуйте, FDSC, Вы писали:
FDS>Простите, немого оффтопик. А что у него за за идеология параллелизма? (если есть нормальная ссылка, на русском или английском)
Поищи в Декларативном программировании.
FDS>P.S. Если я правильно понимаю, идеология активных объектов подразумевает 1 поток на 1 объект.
Не обязательно. Можно для каждого объекта создавать облегченный поток. Другими словами использовать кооперативный ражим. Эрланк вообще-то не ООЯ так что активный объект — это условно. Там это назвается не объектами, а процессами (хотя тут тоже будет путанница так как это виртуальные процессы и к процессам ОС они отношения не имеют). Между процессами обмен ведется только посредством сообщений. Память у каждого процесса иззалированная.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, SergH, Вы писали:
SH>Вопрос примерно такой же оригинальный. А как оведут до ума голосовое управление и прочий искуственный интеллект, так и программировать на нём можно будет.
Ну тогда сразу появится SkyNet и устроит массовую охоту на людей. Так что надо не тратить зря время, и начинать изучать автомат Калашникова и взрывное дело прямо сейчас
Здравствуйте, ValeraI, Вы писали:
VI>Не ради флейма, а ради выслушивания разных мнений
VI>Как Вы считаете, какой язык программирования будет самым востребованным через несколько лет? VI>Как Вы считаете программисты знающие какой язык (языки) программирования будут самыми высокооплачевыеми через несколько лет?
Думаю все-таки рано или поздно это станет Nemerle или его подобие (Microsoft же известна любовью для всего делать свою версию). Его несомненное достоинство в этом плане, это то что на нем можно писать традиционно — серии простых команд, как на C#, он не делает старые учебные программы бесполезными — можно взять книжку по Паскалю 90-х годов и словарь-памятку Pascal->Nemerle и изучать программирование как обычно, при этом в будущем будет огромный простор для развития в пределах этого же языка.
Здравствуйте, ValeraI, Вы писали: VI>Как Вы считаете, какой язык программирования будет самым востребованным через несколько лет?
Несколько разных. VI>Как Вы считаете программисты знающие какой язык (языки) программирования будут самыми высокооплачевыеми через несколько лет?
Языки не будут высокооплачиваемыми. Высокооплачиваемыми бывают программисты. При этом стать высокооплачиваемым при знании какого-то одного языка шансов у программиста нет. Потому, что высокооплачиваемость определяется не столько знанием языка, сколько умением правильно понять задачу, достаточно точно оценить срок ее реализвции и реализовать с хорошим качеством. Как пишет Спольски, надо быть "smart and get things done".
К сожалению, одного этого недостаточно. Очень уж немногие компании/руководители берут на себя заботу о том, чтобы все "smart and get things done" программисты были высокооплачиваемыми. Так что нужно еще и умение себя продавать. Примерно как здесь.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, ValeraI, Вы писали:
L>>Ничего страшного, главное чтобы человек был хороший (с головой дружил), а все остальное придожится.
VI>Правильно приложится в том числе и правильный язык вот я о нём и спрашиваю
"Правильный язык" для решения какой задачи ?
... << RSDN@Home 1.1.4 PINK FLOYD — Shine On You Crazy Diamond (Part Two) >>
Здравствуйте, VladD2, Вы писали:
VD>Эрэнгом мы займемся после интеграции Немерле в Студию. Точнее попробуем реализовать похожую на него идеологию параллелизма. Правда для гибридных языков наверно вместо процесса разумнее будет использовать идеологию активных объектов.
В чём принципиальная разница? ООП-ориентация или как?
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, VladD2, Вы писали:
VD>>Эрэнгом мы займемся после интеграции Немерле в Студию. Точнее попробуем реализовать похожую на него идеологию параллелизма. Правда для гибридных языков наверно вместо процесса разумнее будет использовать идеологию активных объектов. WH>Уже занялся... (Мне для местного IDL лексер и понадобился) Прототипчик сделаю на немерле, а потом буду портировать на С++ и жабу.
Для явовской машины уже есть реализация на Scala, о чём я писал тут.
Здравствуйте, Андрей Коростелев, Вы писали:
АК>Здравствуйте, ValeraI, Вы писали:
VI>>Не ради флейма, а ради выслушивания разных мнений VI>>Как Вы считаете, какой язык программирования будет самым востребованным через несколько лет?
АК>Языко-ориентированное программирование выглядит многообещающе. В то же время, приход таких языков сведет к минимуму потребность в програмиистах: значительная часть работы перейдет к экспертам в предметной области.
Знаешь, это очень напоминает лозунги когда начали делать языки 4-го уровня, тот же SQL или ABAP/4 у сапа — речь шла ну в точности об этом, что запросы и т.п. будут делать сами бухгалтера, а не программисты. Результат, думаю, ты знаешь
VD>Эрэнгом мы займемся после интеграции Немерле в Студию. Точнее попробуем реализовать похожую на него идеологию параллелизма. Правда для гибридных языков наверно вместо процесса разумнее будет использовать идеологию активных объектов.
оффтоп полный, но...
Я не давно реализовал шаблонную библиотеку на С++ которая позволяет любой объект превратить в живой. Имеется три сферы обитания:
1. Отдельный поток для каждого объекта класса.
2. Все объекты одного типа живут в общем потоке.
3. Все объекты живут в главном потоке приложения.
Скоро напишу комментарии человеческие в коде и выложу
VI>>Как Вы считаете программисты знающие какой язык (языки) программирования будут самыми высокооплачевыеми через несколько лет? АХ>От языка не зависит. Рядовые программисты вообще не высокооплачиваемые. Высокооплачиваемые — грамотные архитекторы, создатели алгоритмов
Здравствуйте, gid_vvp, Вы писали:
_>Я не давно реализовал шаблонную библиотеку на С++ которая позволяет любой объект превратить в живой. Имеется три сферы обитания: _> 1. Отдельный поток для каждого объекта класса. _> 2. Все объекты одного типа живут в общем потоке. _> 3. Все объекты живут в главном потоке приложения.
_> Скоро напишу комментарии человеческие в коде и выложу
у меня чуть по скромнее и задачи немного наверно не такие решаются.
2100 примерно
Моя библиотека позволяет любой класс сделать живым (активным) т.е. его объекты будут полностью жить в отведённой им облости обитания (отдельном потоке, общем потоке для одного типа объектов, общем потоке для нескольких типов объектов, в главном потоке приложения ) и все действия с ними в том числе создание и уничтожение будет происходить в их собственной среде обитания, причём с наружи этим живым объектом можно пользоваться точно так же как и его прототипом (объектом класса который был сделан живым с помощю бидлиотеки), за исключением того что функции члены можновызывать в двух (пока) режимах в синхронном и асинхронном. Т.е. при синхронном использовании он неотличим от своего прототипа, за исключеним того что все функции ваполняются в области где живёт данный объект.
Для того чтобы обычный класс превратить в живой нужно очень мало усилий:
это класс который мы хотим сделать живым
class A
{
public:
A(int arg);
A(int arg1, int arg2);
int f1(std::string str);
void f2(int arg);
}
а это он же но живой
class Active
{
public:
Active(int arg)
: m_Active(arg)
{
}
Active(int arg1, int arg2)
: m_Active(arg1, arg2)
{
}
int f1(std::string str)
{
return m_Active.CallSync(&A::f1, str);//Cинхронный вызов
}
void f2(int arg)
{
m_Active.CallAsync(&A::f2, arg);//Асинхронный вызов
}
private:
AOTL::ActiveObjectProxy<A, AOTL::SharedThread<A, std::exception> > m_Active;// данный живой объект живёт в общем потоке
//AOTL::ActiveObjectProxy<A> m_Active;// данный живой объект живёт в своём отдельном потоке
}
использование
A a(1);//конструктор выполняется прямо тут
Active aa(1);//конструктор выполняется в области обитания живого объектаint i = a.f1("str");//выполняется прямо тут
i = aa.f1("str");//выполняется в области обитания живого объекта, а сюда возвращается результат (этот поток ждёт пока не придёт результат)
a.f2(1);//выполняется прямо тут
aa.f2(1);//выполняется асинхронно в области обитания живого объекта (этот поток не ждёт )
Здравствуйте, Курилка, Вы писали:
К>В чём принципиальная разница? ООП-ориентация или как?
В догмах. Точнее их отсуствии. Зачем изобретать дебильные вещи вроде словарей процесса (одна терминология чего стоит!), если можно просто позволить объявлять поля?
В Немерле нет догматов вроде "нельзя изменять перменные". Зато в нем есть классы и объекты. Так почему бы их не исползовать.
Данные можно передавать в виде вариантов и сериализуемых объектов. Синхронизацию обеспечить простой очередью. А легкие потоки организовать за самим. Будет ни хуже чем в Эрланге, но с полноценным компилтором и IDE. Кому хочется может писать чисто функциональные вещи не держа состояние в объекте. Кому не хочется может хранить состояние.
Конечно там много чего надо продумывать, и много проблем надо решать. Одна из главных пожалуй — это как отнимать управление у методов активного объекта? Ждать пока они завершат работу (чистый кооператив), или все же изобретать сложное переписывание кода а-ля продолжения (континюэшоны)? Но тем не менее все это решаемо.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, gid_vvp, Вы писали:
_>Я не давно реализовал шаблонную библиотеку на С++ которая позволяет любой объект превратить в живой. Имеется три сферы обитания: _> 1. Отдельный поток для каждого объекта класса. _> 2. Все объекты одного типа живут в общем потоке. _> 3. Все объекты живут в главном потоке приложения.
Примерно об этом и идет речь, но ты не гарантируешь что из твоего объекта кто-то не заполучит прямой доступ к другим. А тут это гарантируется. Плюс у тебя наверняка не решена проблема отема управления у методов активных объектов и возобновления их исполнения с того же места.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.