Здравствуйте, Lorenzo_LAMAS, Вы писали:
__>>Глядя на все улучшения C++, я все больше склоняюсь к D-подобному языку
L_L>Нельзя ли пояснить? С примерами?
Я ни в коем случае не хотел сказать, что улучшения языка это плохо, наоборот мне очень нравятся идеи улучшения языка и библиотеки
Я имел ввиду, что проблема самого языка не решается, а создается обход этих проблем.
Естественно это для совместимости с С.
Вот возьмем например стандарт генерации имен для линкера и для RTTI.
Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
Здравствуйте, TheyCallMeEvil, Вы писали:
TCM>Здравствуйте, _nn_, Вы писали:
__>>Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
TCM>А аргументы как передавать? Тоже стандарт? Для каждой платформы — свой стандарт?
А чем плохо иметь стандарт на кодирование имен ?
Гляди что-то вроде переносимой рефлексии можно было бы сделать..
В смысле как передавать ?
Всегда по ссылке, кроме встроенных, которые по значению.
Зачем программист вообще об этом должен думать ?
Почему не писать просто:
void f(in char x);
void f(in some_type x);
Пусть компилятор думает, он знает как оптимальней. shuffle:
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, TheyCallMeEvil, Вы писали:
TCM>>Здравствуйте, _nn_, Вы писали:
__>>>Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
TCM>>А аргументы как передавать? Тоже стандарт? Для каждой платформы — свой стандарт?
__>А чем плохо иметь стандарт на кодирование имен ? __>Гляди что-то вроде переносимой рефлексии можно было бы сделать..
__>В смысле как передавать ? __>Всегда по ссылке, кроме встроенных, которые по значению. __>Зачем программист вообще об этом должен думать ? __>Почему не писать просто: __>
Здравствуйте, Dimondiy, Вы писали:
D>Здравствуйте, _nn_, Вы писали:
__>>Здравствуйте, TheyCallMeEvil, Вы писали:
TCM>>>Здравствуйте, _nn_, Вы писали:
__>>>>Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
TCM>>>А аргументы как передавать? Тоже стандарт? Для каждой платформы — свой стандарт?
__>>А чем плохо иметь стандарт на кодирование имен ? __>>Гляди что-то вроде переносимой рефлексии можно было бы сделать..
__>>В смысле как передавать ? __>>Всегда по ссылке, кроме встроенных, которые по значению. __>>Зачем программист вообще об этом должен думать ? __>>Почему не писать просто: __>>
__>>Пусть компилятор думает, он знает как оптимальней. shuffle:
D>На то ты и программист чтоб думать, не всегда компилятор может найти оптимальное решение в каждом случаи....
Позволю с вами несогласиться.
Вот оптимальным решением было бы наверное введение Reference-Type и Value-Type как в .Net.
Но в С++ нет
Если хочется простого синтаксиса, почему нет ?
Здравствуйте, _nn_, Вы писали:
D>>На то ты и программист чтоб думать, не всегда компилятор может найти оптимальное решение в каждом случаи....
__>Позволю с вами несогласиться. __>Вот оптимальным решением было бы наверное введение Reference-Type и Value-Type как в .Net. __>Но в С++ нет __>Если хочется простого синтаксиса, почему нет ?
Ну это тоже не оптимальное решение, и для таких языков как С++ это не подходит — GC нет. И не надо кстати.
А почему ты не рассказал про наш план?
Вообще на самом-то деле компилятор можно заставить компилятор выполнять это дело за программиста. Синтаксис следующий:
void foo(in<std::string> str, in<int> i, out<double> d, inout<std::vector<int> > v);
//str передается по ссылке на конст объект, i по значению, d по ссылке, v по ссылке. (выбор происходит в зависимости от тvoid bar()
{
std::vector<int> v;
std::string str;
int i;
double d;
foo(str, i, d, v);
}
Компилятор сам сообразит как лучше передавать параметр.
Это скажем так обобщение boost.call_traits.param_type. Coming Soon!
ЗЫ все преобразования работают (rg45 знает про что я ).
ЗЗЫ только к сожалению вызов методов работает через ->
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, TheyCallMeEvil, Вы писали:
TCM>>Здравствуйте, _nn_, Вы писали:
__>>>Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
TCM>>А аргументы как передавать? Тоже стандарт? Для каждой платформы — свой стандарт?
__>А чем плохо иметь стандарт на кодирование имен ?
Ну вроде всем хорошо, только не понятно как.
__>Гляди что-то вроде переносимой рефлексии можно было бы сделать..
Ну наверное...
__>В смысле как передавать ?
Наверное имелось в виду не "как" а "через что" передавать.
__>Всегда по ссылке, кроме встроенных, которые по значению. __>Зачем программист вообще об этом должен думать ? __>Почему не писать просто: __>
__>Пусть компилятор думает, он знает как оптимальней. shuffle:
Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек...
Какая уж тут безболезненная связь файлов от разных компиляторов?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Некроссплатформенность маловероятна (c) Sheridan
...трава никак не влияет, разве что срывает покровы барьеров... (с) мыщъх
Здравствуйте, olexandr, Вы писали:
O>Здравствуйте, _nn_, Вы писали:
__>>Здравствуйте, TheyCallMeEvil, Вы писали:
TCM>>>Здравствуйте, _nn_, Вы писали:
__>>>>Был бы один стандарт на всех, как в С например, можно было бы безболезненно связывать файлы от разных компиляторов..
TCM>>>А аргументы как передавать? Тоже стандарт? Для каждой платформы — свой стандарт?
__>>А чем плохо иметь стандарт на кодирование имен ?
O>Ну вроде всем хорошо, только не понятно как.
__>>Гляди что-то вроде переносимой рефлексии можно было бы сделать..
O>Ну наверное...
__>>В смысле как передавать ?
O>Наверное имелось в виду не "как" а "через что" передавать.
__>>Всегда по ссылке, кроме встроенных, которые по значению. __>>Зачем программист вообще об этом должен думать ? __>>Почему не писать просто: __>>
__>>Пусть компилятор думает, он знает как оптимальней. shuffle:
O>Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек... O>Какая уж тут безболезненная связь файлов от разных компиляторов?
Можно добавить в генерацию названий функции линкера способ передачи.
Здравствуйте, _nn_, Вы писали:
__>>>Всегда по ссылке, кроме встроенных, которые по значению. __>>>Зачем программист вообще об этом должен думать ? __>>>Почему не писать просто: __>>>
__>>>Пусть компилятор думает, он знает как оптимальней. shuffle:
O>>Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек... O>>Какая уж тут безболезненная связь файлов от разных компиляторов?
__>Можно добавить в генерацию названий функции линкера способ передачи.
Ну как, например, это можно будет сделать для регистров? Их разное количество, они разной разрадности...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Некроссплатформенность маловероятна (c) Sheridan
...трава никак не влияет, разве что срывает покровы барьеров... (с) мыщъх
Здравствуйте, olexandr, Вы писали:
O>Здравствуйте, _nn_, Вы писали:
__>>>>Всегда по ссылке, кроме встроенных, которые по значению. __>>>>Зачем программист вообще об этом должен думать ? __>>>>Почему не писать просто: __>>>>
__>>>>Пусть компилятор думает, он знает как оптимальней. shuffle:
O>>>Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек... O>>>Какая уж тут безболезненная связь файлов от разных компиляторов?
__>>Можно добавить в генерацию названий функции линкера способ передачи.
O>Ну как, например, это можно будет сделать для регистров? Их разное количество, они разной разрадности...
Что-то я вас не понимаю.
Вы говорите, что это не будет работать для разных платформ ?
Вы говорите как-будто сейчас это возможно.
Здравствуйте, _nn_, Вы писали:
__>>>>>Всегда по ссылке, кроме встроенных, которые по значению. __>>>>>Зачем программист вообще об этом должен думать ? __>>>>>Почему не писать просто: __>>>>>
__>>>>>Пусть компилятор думает, он знает как оптимальней. shuffle:
O>>>>Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек... O>>>>Какая уж тут безболезненная связь файлов от разных компиляторов?
__>>>Можно добавить в генерацию названий функции линкера способ передачи.
O>>Ну как, например, это можно будет сделать для регистров? Их разное количество, они разной разрадности...
__>Что-то я вас не понимаю. __>Вы говорите, что это не будет работать для разных платформ ? __>Вы говорите как-будто сейчас это возможно.
Ну даже на одной платформе не очень хорохо получается, регистры добавляютя (fs/gs/...), расширяются (eax, ...). Поэтому наверное и смысла нет придумывать какой-то универсальный способ передачи параметров, разве что через стек И то не везде он есть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Некроссплатформенность маловероятна (c) Sheridan
...трава никак не влияет, разве что срывает покровы барьеров... (с) мыщъх
Здравствуйте, olexandr, Вы писали:
O>Здравствуйте, _nn_, Вы писали:
__>>>>>>Всегда по ссылке, кроме встроенных, которые по значению. __>>>>>>Зачем программист вообще об этом должен думать ? __>>>>>>Почему не писать просто: __>>>>>>
__>>>>>>Пусть компилятор думает, он знает как оптимальней. shuffle:
O>>>>>Вот один компилятор думает что через глобальные переменные удобно, а другой — что через регистры процессора, а третий — через стек... O>>>>>Какая уж тут безболезненная связь файлов от разных компиляторов?
__>>>>Можно добавить в генерацию названий функции линкера способ передачи.
O>>>Ну как, например, это можно будет сделать для регистров? Их разное количество, они разной разрадности...
__>>Что-то я вас не понимаю. __>>Вы говорите, что это не будет работать для разных платформ ? __>>Вы говорите как-будто сейчас это возможно.
O>Ну даже на одной платформе не очень хорохо получается, регистры добавляютя (fs/gs/...), расширяются (eax, ...). Поэтому наверное и смысла нет придумывать какой-то универсальный способ передачи параметров, разве что через стек И то не везде он есть
Мне кажется вы не поняли правильно идею.
Я не утверждал как лучше передавать аргументы и через какие регистры.
Я говорю, что вместо T const&, писать in T.
Естественно как и в стандартном способе передача аругментов будет через стек.