Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Новые веяния моды в программировании


Автор: jonie 26.9.2009, 20:40
Итак, веб развивается.. и вот уже на горизонте замаячила ОСь от гугла (которая веб ориентированная), да и прочие не отстают (например плагины для Chrome\FF почти самостоятельные программы, но на скрипт языках).....

Что же будет с С++ ? Может стоит уже сейчас учить какой-нибудь javascript?

Автор: GoldFinch 26.9.2009, 20:54
jonie, говорили же уже за полезность С++

Автор: NightmareZ 26.9.2009, 22:15
Цитата(jonie @  26.9.2009,  20:40 Найти цитируемый пост)
Что же будет с С++ ? Может стоит уже сейчас учить какой-нибудь javascript?


Давно пора.

Автор: jonie 26.9.2009, 22:32
GoldFinch, вопрос не в полезности, а в интересе общества, а значит и восстребованности специалистов данного направления.

Вы можете знать очень полезный язык фортран, но работу с ним найти не так просто (по крайней мере в РФ).

Автор: NightmareZ 26.9.2009, 22:33
О, круто, меня уже минусуют. Товарищи минусующие, а вы правда считаете, что зная один C++ вы можете называться программистами?

Автор: jonie 26.9.2009, 22:39
NightmareZ, "здесь вам не тут" (не хабра с нытиками), а ты думаешь знание 10 языков программирования говорит о том что ты программист ? я-то всегда думал что программист это математик, знающий (и умеющий применять к месту) алгоритмы и т.п......

Автор: Oxy 26.9.2009, 22:47
Цитата(jonie @  26.9.2009,  20:40 Найти цитируемый пост)
какой-нибудь javascript?

а Вы не думаете что тогда уже будут рулить: silverlight, java applets, flash, ... т.е. C#, Java, ActionScript, C++ dot net, ...

Добавлено через 1 минуту и 10 секунд
NightmareZ, а кто по-вашему программист?

Автор: kemiisto 26.9.2009, 22:51
Цитата(Oxy @  26.9.2009,  23:47 Найти цитируемый пост)
NightmareZ, а кто по-вашему программист? 

Только он сам. smile 

Цитата(jonie @  26.9.2009,  21:40 Найти цитируемый пост)
Может стоит уже сейчас учить какой-нибудь javascript?

Учите уж чего-нибудь более многообещающее. Тотже Python.

Автор: GoldFinch 26.9.2009, 22:57
NightmareZ, я думаю тут почти все знают не один С++

Автор: NightmareZ 26.9.2009, 23:07
Цитата(jonie @  26.9.2009,  22:39 Найти цитируемый пост)
"здесь вам не тут" (не хабра с нытиками)

Ну вот, взяли хабру обгадили за просто так.

Цитата(jonie @  26.9.2009,  22:39 Найти цитируемый пост)
а ты думаешь знание 10 языков программирования говорит о том что ты программист ?

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

Цитата(jonie @  26.9.2009,  22:39 Найти цитируемый пост)
я-то всегда думал что программист это математик, знающий (и умеющий применять к месту) алгоритмы и т.п......

Математик без знания инструментов - лишь математик. Программист отличается от такого математика тем, что может алгоритмы воплощать в жизнь. Разными способами, в разных сферах.

Цитата(Oxy @  26.9.2009,  22:47 Найти цитируемый пост)
а Вы не думаете что тогда уже будут рулить: silverlight, java applets, flash, ... т.е. C#, Java, ActionScript, C++ dot net, ...

Яваскрипты хорошо бы знать хотя бы потому, что в ней несколько иной подход к ООП, нежели в C++. Да и не собирается она отмерать, ибо на ней слишком много завязано.
А, вообще, имхо, да, то, что ты перечислил, хотя бы поверхностно знать стоит.

Цитата(Oxy @  26.9.2009,  22:47 Найти цитируемый пост)
NightmareZ, а кто по-вашему программист?

Я выше в этом посте написал.... про математика и программиста.

Цитата(kemiisto @  26.9.2009,  22:51 Найти цитируемый пост)
Только он сам.

Я такого нигде не говорил.

Цитата(kemiisto @  26.9.2009,  22:51 Найти цитируемый пост)
Учите уж чего-нибудь более многообещающее. Тотже Python.

Почему именно питон? И чем он для тебя так многообещающ?

Цитата(GoldFinch @  26.9.2009,  22:57 Найти цитируемый пост)
я думаю тут почти все знают не один С++

Меня в последнее время по этому поводу терзают смутные сомнения.

Автор: Oxy 26.9.2009, 23:14
Цитата(NightmareZ @  26.9.2009,  23:07 Найти цитируемый пост)
Программист отличается от такого математика тем, что может алгоритмы воплощать в жизнь. Разными способами, в разных сферах.

Цитата(NightmareZ @  26.9.2009,  22:33 Найти цитируемый пост)
вы правда считаете, что зная один C++ вы можете называться программистами? 

если я знаю только C++ и могу алгоритмы воплощать в жизнь, разными способами, в разных сферах,
я программист или нет? smile 
Цитата(NightmareZ @  26.9.2009,  23:07 Найти цитируемый пост)
Да и не собирается она отмерать, ибо на ней слишком много завязано.

что завязано?

Автор: NightmareZ 26.9.2009, 23:21
Цитата(Oxy @  26.9.2009,  23:14 Найти цитируемый пост)
если я знаю только C++ и могу алгоритмы воплощать в жизнь, разными способами, в разных сферах,я программист или нет?

Ты - нет. Ибо ты этого не можешь. Или пруфлинк в студию.

Цитата(Oxy @  26.9.2009,  23:14 Найти цитируемый пост)
что завязано?

Ты серьёзно не знаешь сферу применения яваскриптов?

Автор: kemiisto 26.9.2009, 23:23
Цитата(Oxy @  27.9.2009,  00:14 Найти цитируемый пост)
что завязано? 

Интернеты. smile 

Цитата(NightmareZ @  27.9.2009,  00:07 Найти цитируемый пост)
Почему именно питон? И чем он для тебя так многообещающ?

Дело не во мне. А в индустрии. Она отказыватеся от ++ и смотрит в сторону его приемников. Java, C#, Python. Я Python для примеру привёл.

Вообще, я давече уже высказаывался по-поводу изучение второго и последующих языков программирования http://forum.vingrad.ru/forum/topic-273740/anchor-entry1973962/0.html. Копипастить не буду.

Автор: Oxy 26.9.2009, 23:32
Цитата(NightmareZ @  26.9.2009,  23:21 Найти цитируемый пост)
Ты - нет. Ибо ты этого не можешь. Или пруфлинк в студию.

в каких сферах я не могу что-то сделать?
Цитата(NightmareZ @  26.9.2009,  23:21 Найти цитируемый пост)
Ты серьёзно не знаешь сферу применения яваскриптов? 

я javascript знаю на много лучше C++, 
но со временем код на js становится все больше и больше, хотя многое могло бы быть уже на клиенте(хотя бы jQuery), зачем каждый раз передавать клиенту столько кода, и интерпретируют его иногда по разному, приходится придумывать костыли

Автор: GoldFinch 27.9.2009, 00:09
kemiisto, 
Java, C#, Python никогда не будут приемниками С++ потому что ВМ
вот когда они будут компилиться в нативный код - тогда они смогут стать приемниками С++

Автор: Lazin 27.9.2009, 00:25
Я думаю что будет уменьшаться, но сила инерции здесь будет очень велика.
Ну а насчет веб-а, на С++ то-же пишут, всякие Facebook-и и яндексы, которым приходится обрабатывать очень много данных, используют С++. Гугловский big table то-же не на PHP написан. smile 
В общем С++ будут по прежнему использовать для всякого server side-a smile 
Ну и в gamedev-e, естественно... XNA, это конечно круто, но люди, которые там работают, даже стандартные контейнеры иногда боятся использовать... FPS наше все smile 
Но!
Через несколько лет все может измениться. Все дело в законе Мура, как известно, тактовые частоты современых процессоров, некоторое время назад, перестали расти. Вместо этого, начало расти количество ядер, этих процессоров. Года через 2-3, hi end десктоп, будет похож на современный сервер, то-есть иметь штук 16 CPU. smile 
Реализовывать параллельные/конкурентные алгоритмы на С++, это pain in the ass. Никогда не знаешь, будет ли оно на самом деле работать быстрее, или же все будет работать даже медленнее обычного, последовательного кода. С++, это shared memory и explicit locking, со всеми вытекающими.
Помимо этого, еще существует такая штука, как vector processing, а с векторизацией кода, у С++ компиляторов как правило туго.

Автор: GoldFinch 27.9.2009, 00:25
в жабаскрипте радуют лямбды с замыканиями, полная интроспекция, и простой синтаксис инициализации структур (объектов)

но лямбды с замыканиями будут в С++0х (0xA-0xF), а интроспекция и прочие радости жизни... ну чтож поделать, зато в жабаскрипте перегрузки операторов нет

Автор: Oxy 27.9.2009, 00:31
Цитата(GoldFinch @  27.9.2009,  00:25 Найти цитируемый пост)
зато в жабаскрипте перегрузки операторов нет 

а зачем?
впрочем как и в Java.

Автор: GoldFinch 27.9.2009, 00:38
в конце концов, язык используется не ради того чтобы его использовать потому что он "хороший", 
а для решения конкретных задач.
Пока что, С++ хорош. На нем удобно писать, там где писать неудобно - можно подстроить синтаксис, перегрузив операторы для реализации DSL, обобщив код чтобы убрать копипасту и лишние зависимости.
При этом производительность весьма хороша.

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

Автор: Lazin 27.9.2009, 00:40
Цитата(GoldFinch @  27.9.2009,  00:09 Найти цитируемый пост)
Java, C#, Python никогда не будут приемниками С++ потому что ВМ
вот когда они будут компилиться в нативный код - тогда они смогут стать приемниками С++
ты так говоришь, как будто VM, это что-то плохое
наоборот, VM обеспечивает модульность и interoperability(не знаю как перевести), простой пример, ты написал программу на с++, в которой использовал стороннюю библиотеку, потом вышла новая версия этой библиотеки, которая умеет портить память smile 
В результате, твоя программа упадет, но в каком нибудь неожиданном месте, тебе не кажется что это не совсем... технологично, что-ли. Плохая модульность.
Другой пример, у тебя есть библиотека, написанная на чем нибудь экзотическом, с calling convention ты разобрался, но вот беда, библиотека оперирует с float-ами другого формата и функции этой библиотеки возвращают далеко не примитивные типы данных... Х#вое interoperability.

Автор: GoldFinch 27.9.2009, 00:43
Oxy, перегрузка операторов затем что DSL, и затем что обобщенность
я предпочитаю писать iterator++ вместо iterator.increment()
и писать код одинаково работающий как со стандартными числовыми типами, так и с любыми классами поддерживающими арифметические операторы.

Автор: Lazin 27.9.2009, 00:56
в последнее время меня вообще умиляют рассказы о всевозможных DSL на C++. 
DSL, как правило!!, это когда ты сидишь и пишешь много часов не саму программу, а этот гребаный DSL, ф-я которого состоит в том, что-бы автоматически выявлять логические ошибки во время компиляции
это неоправданное усложнение кода в большинстве случаев, а поддержка кода состоящего(чуть более чем сами знаете как) из шаблонной магии, это ###, потому-что через месяц возникает вопрос, что за ### написал эту ###
если С++ код использует template metaporgramming для реализации expression templates для реализации EDSL для какой-нибудь маловажной ###, то скорее всего программисту просто было пакайфу его писать, вероятно он чувствовал себя ### каким умным в этот момент и вряд-ли задумывался о том, что тратит время зря smile 
Но конечно, если вас зовут Joel de Guzman, то флаг вам в руки, в остальных случаях... smile 

Автор: GoldFinch 27.9.2009, 00:58
Lazin, цена которая платится за преимущества ВМ слишком высока.
В ВМ есть только то, что есть в этой ВМ, а это не всегда соответствует возможностям конкретной системы, под которую и пишется программа.

Допустим в ВМ нет доступа к реальной памяти, поэтому код библиотек не может ее портить. Но если этот доступ был бы реально полезен для задачи -  его не получить.
Или например в ВМ используется один формат float'ов , а на самом деле этих форматов float'ов много, и не факт что тот float который в ВМ лучше подойдет к моей задаче, но нормального способа юзать другой float в ВМ нет.

Добавлено через 5 минут и 35 секунд
Lazin, ДСЛ - это не обязательно вещи уровня лямбды или спирита.
перегрузка * для перемножения матриц - это уже ДСЛ.
использование + для конкатенации буферов - это тоже ДСЛ.

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

и если знать язык и методы написания такого кода - то много времени это не займет

Добавлено через 7 минут и 7 секунд
и да, это действительно пакайфу писать =)

Автор: Lazin 27.9.2009, 10:55
Цитата(GoldFinch @  27.9.2009,  00:58 Найти цитируемый пост)
перегрузка * для перемножения матриц - это уже ДСЛ
не преувеличивай, так можно договориться и до того, что метод push_back, добавляющий что-либо в конец контейнера, это то-же DSL smile 

Цитата(GoldFinch @  27.9.2009,  00:58 Найти цитируемый пост)
но если в коде будут сложные выражения, то шаблоны выражений вместо явной композиции функции могут реально ускорить код, при этом сделав его более читаемым. Да, это только для тех случает когда сложность задачи оправдывает время на написание ДСЛ.
Задача программиста состоит в том, что-бы сделать так, что-бы задача перестала быть сложной, а не в том, что-бы решить очень сложную задачу - очень сложными средствами. Код, который использует какой-либо DSL, например boost.spirit, выглядит проще, но это не значит, что он делает что-то столь-же простое. Иногда это приводит к тому, что код делает не совсем то, что от него ожидает программист.

Цитата(GoldFinch @  27.9.2009,  00:58 Найти цитируемый пост)
В ВМ есть только то, что есть в этой ВМ, а это не всегда соответствует возможностям конкретной системы, под которую и пишется программа.

Допустим в ВМ нет доступа к реальной памяти, поэтому код библиотек не может ее портить. Но если этот доступ был бы реально полезен для задачи -  его не получить.
Обычно, существует возможность использовать нативный код, практически в любой ВМ. С другой стороны, тот-же .NET FCL имеет столько возможностей, что вряд-ли тебе это часто будет нужно smile

Добавлено через 10 минут и 1 секунду
Цитата(Lazin @  27.9.2009,  10:55 Найти цитируемый пост)
Код, который использует какой-либо DSL, например boost.spirit, выглядит проще, но это не значит, что он делает что-то столь-же простое. Иногда это приводит к тому, что код делает не совсем то, что от него ожидает программист.

оговорюсь, я использую boost.spirit, но не потому-что это круто smile , а потому-что это действительно пример удачной реализации DSL, можно привести примеры неудачных, например библиотека SOCI. Если говорить о spirit-e, то это очень сложный проект, который живет уже достаточно долго и в котором участвовали далеко не дилетанты - http://spirit.sourceforge.net/spirit_folks.html

Автор: Любитель 27.9.2009, 11:29
Цитата(Oxy @  26.9.2009,  23:32 Найти цитируемый пост)
хотя многое могло бы быть уже на клиенте(хотя бы jQuery)

Т. е. кеширование у нас отменили?! А в случае с С++ - почему в стандартный рантайм не встроена, скажем, ГУИ-либа? Кто-то от этого страдает?

Цитата(Lazin @  27.9.2009,  00:25 Найти цитируемый пост)
Ну а насчет веб-а, на С++ то-же пишут, всякие Facebook-и и яндексы, которым приходится обрабатывать очень много данных, используют С++. Гугловский big table то-же не на PHP написан.

Ну.. ТЫ говоришь про бэкенды. Да-да СУБД никто не писается писать на прикладных языках - это область системного программирования. Здесь С++ никуда не уйдёт. Сспоры, что С != С++ оставим, я это понимаю, но в данном случае это неважно, ибо для СУБД оправдано использование С++ в разумной мере smile 

Цитата(Lazin @  27.9.2009,  00:56 Найти цитируемый пост)
в последнее время меня вообще умиляют рассказы о всевозможных DSL на C++. 

 smile 

Цитата(GoldFinch @  27.9.2009,  00:58 Найти цитируемый пост)
Lazin, ДСЛ - это не обязательно вещи уровня лямбды или спирита.
перегрузка * для перемножения матриц - это уже ДСЛ.
использование + для конкатенации буферов - это тоже ДСЛ.

Проблема не в этом. Проблема в том, что в С++ средств полноценного метапрограммирования на самом деле нет. Точней так - есть средства метапрограммирования, но предназначенные только для абстрагирования от типа. А ДСЛ-и строить на С++ - это извращенье smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)