Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пост превосходства современных ЯП, над олдскульными 
:(
    Опции темы
Lazin
Дата 16.12.2009, 14:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(serger @  16.12.2009,  14:19 Найти цитируемый пост)
Объясните

а он того, живет в 91-м smile
PM MAIL Skype GTalk   Вверх
serger
Дата 16.12.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Lazin @  16.12.2009,  14:34 Найти цитируемый пост)
а он того, живет в 91-м smile

Больше вопросов нет!   smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
GoldFinch
Дата 16.12.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



алсо тема похоже о том, что 
"современные" ЯП превосходят "несовремененные", и при этом сопоставимы по производительности, там где не нужна производительность

в чем "современность" языка?
язык - это синтаксис+семантика, сделай для С++ компилятор в байт-код, он сразу станет современным?
может несовременность С++ в том что в нем нет сбора мусора?
так есть например D, тоже компилится в нативный код (и .NET и LLVM), и там есть сбор мусора, D современный язык?

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

Я думаю что современный язык, при большом количестве удобных встроенных языковых средств, должен иметь удобный синтаксис.
А критерием удобства синтаксиса надо считать энтропию исходника, и обратно - меру его избыточности, т.е. сколько можно выкинуть из исходника, сохранив его читаемость.
PM MAIL ICQ   Вверх
djamshud
Дата 16.12.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



>Объясните

Всего лишь шутка, игра слов. Наверное стоило смайлик поставить).

Добавлено через 4 минуты и 14 секунд
>а он того, живет в 91-м

Почему же? Ява не нужна на всем протяжении истории:D.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
serger
Дата 16.12.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(djamshud @  16.12.2009,  15:40 Найти цитируемый пост)
Почему же? Ява не нужна на всем протяжении историиsmile

Бедный я..  smile 
Если честно, не понятно, в каком контекста. Да и язык уже далеко не новенький, хотя развивается..


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Lazin
Дата 16.12.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
язык - это синтаксис+семантика, сделай для С++ компилятор в байт-код, он сразу станет современным?
неа

Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
так есть например D, тоже компилится в нативный код (и .NET и LLVM), и там есть сбор мусора, D современный язык?
ага

Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
может на C# или на Java писать удобнее? Да ниразу. Синтаксис от С недалеко ушел.

без обид, но ты либо не умеешь на них программировать, либо не знаешь С++, но мне кажется, что все-таки первое smile 

язык программирования это не только скобочки и отступы, это возможность описать определенное поведение, или невозможность
раз уж ты упомянул python, попробуй реализовать аналог python-овского генератора на С++ - 
Код

def collatz_seq(start)
    n = start
    yield n
    while n > 1:
        if n % 2 == 0:
            n = n/2
        else:
            n = n*3 + 1
        yield n

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

PM MAIL Skype GTalk   Вверх
Abyx
Дата 16.12.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: нет
Всего: 10



-------

Это сообщение отредактировал(а) Abyx - 16.12.2009, 20:00
PM MAIL   Вверх
GoldFinch
Дата 16.12.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  17:10 Найти цитируемый пост)
попробуй реализовать аналог python-овского генератора на С++ - 

http://codepad.org/XoipjOMa
итератор - он и в С++ итератор

да, кнешно вышло длинно, потому что в С++ это не средство языка, там вообще не очень-то нужных языковых средств, а зато много унаследовано от С ненужных..., но речь не о С

Добавлено через 13 минут и 56 секунд
наличие в Python нескольких полезных вещей еще не делает его хорошим языком. Взять например JavaScript - в нем много вещей которые сложно реализовать на питоне, и уж тем более на С++. Однако иногда, когда я кодю на js мне хочется некоторые вещи писать на C++
Сейчас есть много языков, и все они в той или иной мере - плохие. Есть много новых языков - но ни один из них не хочется назвать "современным".

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

Любой код в конечном счете преобразуется в низкоуровневый алгоритм. Как в этом примере с yield/итератором, тот же код можно переписать и на С, и на асм. При этом размер кода увеличивается, однако, если это частая задача - ее можно обернуть в макрос, шаблон - использовать метапрограммирование чтобы расширить язык. На примере того же С++ видно что с метапрограммированием в нем сейчас плохо, надо писать множество угловых скобочек, а гдето задействовать препроцессор. Однако если бы язык позволял добавлять новые ключевые слова и операторы - проблема с фишками языка значительно бы уменьшилась.
PM MAIL ICQ   Вверх
Lazin
Дата 16.12.2009, 21:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
да, кнешно вышло длинно, потому что в С++ это не средство языка, там вообще не очень-то нужных языковых средств, а зато много унаследовано от С ненужных..., но речь не о С
вот смотри, итератор - моделирует обычный указатель, который в свою очередь предназначен для низкоуровневой работы с памятью. Это было сделано, для того, что-бы Си программистам было проще. Для того, что-бы реализовать такую последовательность(генератор в терминологии python-a), пришлось сделать свой указатель, и теперь у нас работа с такой последовательностью чисел выглядит так-же как работа с областью памяти, как-то странновато, не находишь? smile Но мы ведь работаем не с памятью, вместо последовательности Коллатца, там может быть вообще бесконечная последовательность, но выглядит это опять-же, как работа с ограниченным набором данных. Дыра в абстракции smile
это все ненужная сложность

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
Скобочки и отступы - не самая незначительная часть языка, мне например не нравится то, что мне приходится писать то, что компилятор мог понять и сам, и также не нравится что компилятор не учитывает того как я привык писать. 

Цитата

template<typename T>
struct collatz_seq : std::iterator<std::input_iterator_tag, T> 
{
    typedef collatz_seq<T> this_t;

    T n;   

    collatz_seq(T start) : n(start) {}

    bool operator!= ( const this_t& )
    { 
          return n>1; 
    }

    this_t& operator++ () 
    {
        if( n % 2 == 0 )
            n = n/2;
        else
            n = n*3 + 1;

        return *this;        
    }

    collatz_seq() {}

    T operator* () { return n; }

    this_t operator++ (int) { T t=n; ++(*this); return this_t(t); }
    bool operator == ( const this_t& rhs ) { return !(*this!=rhs); }
};

int main()
{
    typedef int T;
    std::vector<T> v( collatz_seq<T>(5), collatz_seq<T>() );
    std::copy( v.begin(), v.end(), std::ostream_iterator<T>(std::cout,"\n") );
}

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

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
Любой код в конечном счете преобразуется в низкоуровневый алгоритм. Как в этом примере с yield/итератором, тот же код можно переписать и на С, и на асм.

в конечном итоге - да, но вот сам процесс, есть задачи, которые С++(и не только ему) просто не по зубам, к примеру, ты когда-нибудь видел С++ библиотеку, которая бы позволяла один и тот-же код, выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения? Вот я то-же не видел, а для .NET оно есть, для python - тоже есть. smile 

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
На примере того же С++ видно что с метапрограммированием в нем сейчас плохо, надо писать множество угловых скобочек, а гдето задействовать препроцессор. Однако если бы язык позволял добавлять новые ключевые слова и операторы - проблема с фишками языка значительно бы уменьшилась. 
ну а я о чем, вообще метапрограммирование как-бы не особо и нужно, если есть нормальный JIT-компилятор и функции высшего порядка. smile

Это сообщение отредактировал(а) Lazin - 16.12.2009, 21:28
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 16.12.2009, 21:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  21:22 Найти цитируемый пост)
вот смотри, итератор - моделирует обычный указатель

итератор - это итератор. нечто, что позволяет итеративно обойти элементы некоторого составного объекта, 
смотри например паттерн "итератор" у четырех бандитов.
В данном случае, объект - это последовательность Коллатца, математический объект, состоящий из упорядоченных чисел. И итератор этот объект обходит. Так что с абстракцией все в порядке.

Красным в том коде можно больше половины кода выделить. Я не говорил что С++ это хорошо. Я говорил что качественно лучших языков - нет.
А из набора плохих языков, я выбираю С++, т.к. он сейчас лучше всего мне подходит - кроссплатформенный (мне сейчас это надо), с большим набором качественных библиотек (boost.asio), с высокой производительностью генерируемого кода (тоже надо). Другие задачи, я сейчас решаю на html+javascript.

Цитата(Lazin @  16.12.2009,  21:22 Найти цитируемый пост)
ты когда-нибудь видел С++ библиотеку, которая бы позволяла один и тот-же код, выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения?

Библиотека - это исходный код, скомпили ее компилятором который умеет "выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения" - и задача решена. Ничто не мешает компилить С++ в байт код, и потом выполнять его где угодно. В стандарте С++ ничего не сказано про нативную компиляцию, в спецификации С# - про JIT-компиляцию только 1 абзац, никаких требований во что компилить исходник и как его потом выполнять - нет, это языки.

Метапрограммирование - нужно, никакие функции высшего порядка и JIT-компилятор не добавят тебе в язык новую функциональность, тот же yield, если бы его небыло. В С++ же например добавили for each через кучу макросов и шаблонов (boost.foreach).

Это сообщение отредактировал(а) GoldFinch - 16.12.2009, 21:59
PM MAIL ICQ   Вверх
Lazin
Дата 16.12.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Красным в том коде можно больше половины кода выделить. Я не говорил что С++ это хорошо. Я говорил что качественно лучших языков - нет.

вот тут ты не прав, лучшие языки есть, но к сожалению это не mainstream, поэтому библиотек для них - меньше и реализация - слабее

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Метапрограммирование - нужно, никакие функции высшего порядка и JIT-компилятор не добавят тебе в язык новую функциональность, тот же yield, если бы его небыло.
в некоторых языках программирования, этот самый yield добавлен именно с помощью ФВП, та же последовательность Коллатца, но на F# - 
Код

let rec collatz_seq n = seq {
    let next x =
        if x % 2 = 0 
        then x / 2 
        else 3*x + 1
    yield n
    if n <> 1 then
        yield! (n |> next |> collatz_seq)
}

5 |> collatz_seq |> Seq.to_list;;

здесь seq - генерирует последовательность чисел, по требованию, и полностью реализовано средствами языка, используя функции высшего порядка

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Библиотека - это исходный код, скомпили ее компилятором который умеет "выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения" - и задача решена.
где ты видел компилятор С++, который умеет создавать data parallel код сам, я уже молчу про GPU =) 
проблема в том, что компиляция в С++ - статическая, а многие вещи становятся возможны только в том случае, если компиляция - динамическая
есть плюсовые библиотеки, которые позволяют создавать expression trees (я знаю только boost proto), по идее, на основе expression tree можно сгенирировать код для GPU, но почему-то никто еще это не реализовал smile 

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Ничто не мешает компилить С++ в байт код, и потом выполнять его где угодно. В стандарте С++ ничего не сказано про нативную компиляцию, в спецификации С# - про JIT-компиляцию только 1 абзац, никаких требований во что компилить исходник и как его потом выполнять - нет, это языки.
смысла в этом нет, так-как никаких преимуществ из компиляции в байт код CLR или JVM, язык извлечь не позволит

Добавлено через 6 минут и 44 секунды
у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы свертки
с одной стороны задача не совсем синтетическая, здесь есть и I/O и вычисления, с другой - здесь нужно обрабатывать достаточно большие массивы данных, поэтому код должен быть достаточно эффективен 
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 16.12.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  23:13 Найти цитируемый пост)
вот тут ты не прав, лучшие языки есть, но к сожалению это не mainstream, поэтому библиотек для них - меньше и реализация - слабее

я имел ввиду связку язык+компилятор+средства разработки+библиотеки+документация на все это

т.е. есть например замечательный язык Д, но существующие компиляторы не совсем соответствуют его спецификации, нормальной ИДЕ нет, с библиотеками тоже не очень, с документацией у них тоже плохо.
соответственно вместо того чтобы писать на хорошем Д, я пишу на плохом С++, потому что в конечном счете на С++ - быстрее и удобнее.
PM MAIL ICQ   Вверх
W4FhLF
Дата 18.12.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Lazin @  16.12.2009,  23:13 Найти цитируемый пост)
у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы сверткис одной стороны задача не совсем синтетическая, здесь есть и I/O и вычисления, с другой - здесь нужно обрабатывать достаточно большие массивы данных, поэтому код должен быть достаточно эффективен 


Чем можно пользоваться? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 18.12.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(W4FhLF @  18.12.2009,  13:02 Найти цитируемый пост)
Чем можно пользоваться? 

всем
PM MAIL Skype GTalk   Вверх
unicuum
  Дата 18.12.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Ну что Lazin, ты уже победил C++, положил на обе лопатки? smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1344 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.