![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 0 Всего: 5 |
-------------------- упс! |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
алсо тема похоже о том, что
"современные" ЯП превосходят "несовремененные", и при этом сопоставимы по производительности, там где не нужна производительность в чем "современность" языка? язык - это синтаксис+семантика, сделай для С++ компилятор в байт-код, он сразу станет современным? может несовременность С++ в том что в нем нет сбора мусора? так есть например D, тоже компилится в нативный код (и .NET и LLVM), и там есть сбор мусора, D современный язык? может на C# или на Java писать удобнее? Да ниразу. Синтаксис от С недалеко ушел. вот python например можно в чем-то назвать современным языком, в нем попробовали уйти от операторных скобок и произвольного форматирования кода. Да только это всего лишь небольшой шаг вперед. Я думаю что современный язык, при большом количестве удобных встроенных языковых средств, должен иметь удобный синтаксис. А критерием удобства синтаксиса надо считать энтропию исходника, и обратно - меру его избыточности, т.е. сколько можно выкинуть из исходника, сохранив его читаемость. |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
>Объясните
Всего лишь шутка, игра слов. Наверное стоило смайлик поставить). Добавлено через 4 минуты и 14 секунд >а он того, живет в 91-м Почему же? Ява не нужна на всем протяжении истории:D. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 0 Всего: 5 |
Бедный я.. ![]() Если честно, не понятно, в каком контекста. Да и язык уже далеко не новенький, хотя развивается.. -------------------- упс! |
|||
|
||||
Lazin |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
без обид, но ты либо не умеешь на них программировать, либо не знаешь С++, но мне кажется, что все-таки первое ![]() язык программирования это не только скобочки и отступы, это возможность описать определенное поведение, или невозможность раз уж ты упомянул python, попробуй реализовать аналог python-овского генератора на С++ -
код конечно не сложный, но что-бы повторить его семантику на плюсах, придется постараться, а выглядеть это будет довольно убого |
||||||||
|
|||||||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: нет Всего: 10 |
-------
Это сообщение отредактировал(а) Abyx - 16.12.2009, 20:00 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
http://codepad.org/XoipjOMa итератор - он и в С++ итератор да, кнешно вышло длинно, потому что в С++ это не средство языка, там вообще не очень-то нужных языковых средств, а зато много унаследовано от С ненужных..., но речь не о С Добавлено через 13 минут и 56 секунд наличие в Python нескольких полезных вещей еще не делает его хорошим языком. Взять например JavaScript - в нем много вещей которые сложно реализовать на питоне, и уж тем более на С++. Однако иногда, когда я кодю на js мне хочется некоторые вещи писать на C++ Сейчас есть много языков, и все они в той или иной мере - плохие. Есть много новых языков - но ни один из них не хочется назвать "современным". Скобочки и отступы - не самая незначительная часть языка, мне например не нравится то, что мне приходится писать то, что компилятор мог понять и сам, и также не нравится что компилятор не учитывает того как я привык писать. Т.е. как в питоне, если в строке есть if и за ним условие, то непонятно зачем писать двоеточие, или если я всегда делаю отступы - это должно быть правилом языка, чтобы мне не надо было писать операторные скобки. Или например если я задаю список параметров функции, компилятор должен понимать любой список, разделен он запятыми, только пробелами, хз-еще-чем Любой код в конечном счете преобразуется в низкоуровневый алгоритм. Как в этом примере с yield/итератором, тот же код можно переписать и на С, и на асм. При этом размер кода увеличивается, однако, если это частая задача - ее можно обернуть в макрос, шаблон - использовать метапрограммирование чтобы расширить язык. На примере того же С++ видно что с метапрограммированием в нем сейчас плохо, надо писать множество угловых скобочек, а гдето задействовать препроцессор. Однако если бы язык позволял добавлять новые ключевые слова и операторы - проблема с фишками языка значительно бы уменьшилась. |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
вот смотри, итератор - моделирует обычный указатель, который в свою очередь предназначен для низкоуровневой работы с памятью. Это было сделано, для того, что-бы Си программистам было проще. Для того, что-бы реализовать такую последовательность(генератор в терминологии python-a), пришлось сделать свой указатель, и теперь у нас работа с такой последовательностью чисел выглядит так-же как работа с областью памяти, как-то странновато, не находишь? ![]() ![]() это все ненужная сложность
выделил красненьким то, о чем компилятор мог-бы и сам догадаться ![]()
в конечном итоге - да, но вот сам процесс, есть задачи, которые С++(и не только ему) просто не по зубам, к примеру, ты когда-нибудь видел С++ библиотеку, которая бы позволяла один и тот-же код, выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения? Вот я то-же не видел, а для .NET оно есть, для python - тоже есть. ![]() ну а я о чем, вообще метапрограммирование как-бы не особо и нужно, если есть нормальный JIT-компилятор и функции высшего порядка. ![]() Это сообщение отредактировал(а) Lazin - 16.12.2009, 21:28 |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
итератор - это итератор. нечто, что позволяет итеративно обойти элементы некоторого составного объекта, смотри например паттерн "итератор" у четырех бандитов. В данном случае, объект - это последовательность Коллатца, математический объект, состоящий из упорядоченных чисел. И итератор этот объект обходит. Так что с абстракцией все в порядке. Красным в том коде можно больше половины кода выделить. Я не говорил что С++ это хорошо. Я говорил что качественно лучших языков - нет. А из набора плохих языков, я выбираю С++, т.к. он сейчас лучше всего мне подходит - кроссплатформенный (мне сейчас это надо), с большим набором качественных библиотек (boost.asio), с высокой производительностью генерируемого кода (тоже надо). Другие задачи, я сейчас решаю на html+javascript.
Библиотека - это исходный код, скомпили ее компилятором который умеет "выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения" - и задача решена. Ничто не мешает компилить С++ в байт код, и потом выполнять его где угодно. В стандарте С++ ничего не сказано про нативную компиляцию, в спецификации С# - про JIT-компиляцию только 1 абзац, никаких требований во что компилить исходник и как его потом выполнять - нет, это языки. Метапрограммирование - нужно, никакие функции высшего порядка и JIT-компилятор не добавят тебе в язык новую функциональность, тот же yield, если бы его небыло. В С++ же например добавили for each через кучу макросов и шаблонов (boost.foreach). Это сообщение отредактировал(а) GoldFinch - 16.12.2009, 21:59 |
|||
|
||||
Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
вот тут ты не прав, лучшие языки есть, но к сожалению это не mainstream, поэтому библиотек для них - меньше и реализация - слабее
здесь seq - генерирует последовательность чисел, по требованию, и полностью реализовано средствами языка, используя функции высшего порядка где ты видел компилятор С++, который умеет создавать data parallel код сам, я уже молчу про GPU =) проблема в том, что компиляция в С++ - статическая, а многие вещи становятся возможны только в том случае, если компиляция - динамическая есть плюсовые библиотеки, которые позволяют создавать expression trees (я знаю только boost proto), по идее, на основе expression tree можно сгенирировать код для GPU, но почему-то никто еще это не реализовал ![]() смысла в этом нет, так-как никаких преимуществ из компиляции в байт код CLR или JVM, язык извлечь не позволит Добавлено через 6 минут и 44 секунды у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы свертки с одной стороны задача не совсем синтетическая, здесь есть и I/O и вычисления, с другой - здесь нужно обрабатывать достаточно большие массивы данных, поэтому код должен быть достаточно эффективен |
||||||
|
|||||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
я имел ввиду связку язык+компилятор+средства разработки+библиотеки+документация на все это т.е. есть например замечательный язык Д, но существующие компиляторы не совсем соответствуют его спецификации, нормальной ИДЕ нет, с библиотеками тоже не очень, с документацией у них тоже плохо. соответственно вместо того чтобы писать на хорошем Д, я пишу на плохом С++, потому что в конечном счете на С++ - быстрее и удобнее. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Чем можно пользоваться? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Ну что Lazin, ты уже победил C++, положил на обе лопатки?
![]() -------------------- ![]() обычный день на винграде |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |