Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 10.05.11 12:28
Оценка:
Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?
Спасибо.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Кросплатформеность на уровне исходников
От: hardcase Пират http://nemerle.org
Дата: 10.05.11 12:34
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?

AC>Спасибо.

А как ты думаешь, зачем size_t в C++ нужен?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 10.05.11 12:44
Оценка:
Здравствуйте, hardcase, Вы писали:

H>А как ты думаешь, зачем size_t в C++ нужен?


То есть ты считаеш невозможна?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Кросплатформеность на уровне исходников
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 10.05.11 12:50
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?

AC>Спасибо.

Ну она и сейчас возможна. например на C++ вполне можно написать программу, которая одинаково копмпилируется и работает на x86\x64, win\nix.
Другое дело что всегда так делать не получится, это требует дополнительных затрат. Самое главное тут что все различия убираются в библиотеки
Re[2]: Кросплатформеность на уровне исходников
От: мыщъх США http://nezumi-lab.org
Дата: 10.05.11 13:00
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, AlexCab, Вы писали:


AC>>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?

AC>>Спасибо.

H>А как ты думаешь, зачем size_t в C++ нужен?


а что без него кроссплатформенность не обеспечить что ли? ну пусть у нас на 32 битах и size_t и int — 32 бита. пусть на 64 битах size_t 64 бита, а int — 32. при компиляции под 64 бита программа все еще работает с 4 гб памяти макс, а если и забыть unsigned перед int, то индексы дальше 2 Гб не стреляют. использование size_t автоматически бы увеличило предельно допустимый размер блоков с которыми мы можем работать, но если size_t не используется -- в худшем случае мы просто не увидим разницы между 64 и 32. большинство программ и так ее не видят и предельно допустимые размеры обрабатываемых файлов у текстовых редакторов автоматически не увеличиваются при компиляции под 64.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Кросплатформеность на уровне исходников
От: FR  
Дата: 10.05.11 13:22
Оценка: +1
Здравствуйте, AlexCab, Вы писали:

AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?


А при чем тут нативность, достаточно чтобы базовые типы были жестко фиксированы, например как в D http://www.digitalmars.com/d/2.0/type.html
Re: Кросплатформеность на уровне исходников
От: ilnar Россия  
Дата: 10.05.11 13:26
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?

AC>Спасибо.

да. у меня весь проект такой
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 10.05.11 13:59
Оценка:
Здравствуйте, gandjustas, Вы писали:
G>Другое дело что всегда так делать не получится, это требует дополнительных затрат.
О том то и речь, кроме этого есть высокий риск возникновения и шибок связанных с переполнениями, индексами и тп.
то есть при переходе будет необходимо тщательное тестирование и наверняка правка кода (особенно при переходе с 64 на 32).
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 10.05.11 14:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>А при чем тут нативность, достаточно чтобы базовые типы были жестко фиксированы, например как в D http://www.digitalmars.com/d/2.0/type.html

И я об этом думал, но как быть с индексами и офсетами и тп., а также с оптимальностью кода?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 10.05.11 14:07
Оценка:
Здравствуйте, ilnar, Вы писали:
I>да. у меня весь проект такой
Проект ведь изначально был кросплатформеный?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Кросплатформеность на уровне исходников
От: Mamut Швеция http://dmitriid.com
Дата: 10.05.11 14:08
Оценка:
AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?
AC>Спасибо.


Смотря, какие допущения ты позволяешь.

Например, если ты додпускаешь, чтобы за кроссплатформенностью следил фреймворк/библиотека, то — да. См. Qt, например. На уровне исходных текстов твои программы абсолютно кроссплатформенны без изменений.

Другие варианты тут уже расписали.


dmitriid.comGitHubLinkedIn
Re[3]: Кросплатформеность на уровне исходников
От: ilnar Россия  
Дата: 10.05.11 14:34
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Здравствуйте, ilnar, Вы писали:

I>>да. у меня весь проект такой
AC>Проект ведь изначально был кросплатформеный?
нет, был на 32битной ОС линух, перелопатил туеву хучу кода, чтобы типы данных практически не отличались, в первую очередь те, что куда-то передаются, записываются на диск, ...
Re: Кросплатформеность на уровне исходников
От: MasterZiv СССР  
Дата: 10.05.11 20:36
Оценка:
On 10.05.2011 16:28, AlexCab wrote:

> Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32

> и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без
> измения исходного текста), без виртуальной машины(native)?

Конечно же возможна. Вон сколько очень хорошо переносимых языков
имеется. Хотя бы FORTRAN. Абсолютно переносимый язык, лишь бы
компилятор был.
Posted via RSDN NNTP Server 2.1 beta
Re: Кросплатформеность на уровне исходников
От: IT Россия linq2db.com
Дата: 11.05.11 03:02
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?


Что понимается под виртуальной машиной?
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Кросплатформеность на уровне исходников
От: мыщъх США http://nezumi-lab.org
Дата: 11.05.11 03:41
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Здравствуйте, gandjustas, Вы писали:

G>>Другое дело что всегда так делать не получится, это требует дополнительных затрат.
AC>О том то и речь, кроме этого есть высокий риск возникновения и шибок связанных с переполнениями, индексами и тп.
какого типа переполнения, интересно? все работает. то есть, конечно, проблемы есть, но не у си, а у тех, кто не умеет его готовить.


AC>то есть при переходе будет необходимо тщательное тестирование и наверняка правка кода (особенно при переходе с 64 на 32).

тестирование нужно, конечно. а правка кода нужна если только код кривой как бумеранг. поделюсь опытом портирования своей программы. программа большая и на низком уровне описывает некую мат. модель, которую я долго разрабатывал, шлифовал, а потом сам перестал понимать как она работает. когда приступал к разработке -- спросил у архитектора -- под какими платформами ее планируется использовать? мне сказали -- intel 32. ну я и написал. в древнем коде куча мест, работающих только когда младший байт идет первым и когда sizeof(int) == 4. в более позднем коде размер Int'а уже не играет роли (главное -- не меньше 4х байт), но порядок байт все-таки важен. самый поздний код (мыщъх таки набрался опыта!) нечувствителен и к порядку, т.к. при изменении порядка изменение произойдет в обоих "плечах" конструкций, работающих с памятью и будет по фиг.

однако... программу откомпилировали на 64 бит маке и на 64 бит никсах. и даже древний код работает без переделок, где куча конструкций вида *((unsigned int*)p) == 0x11223344. конечно, так писать нельзя, но когда оно писалось, то предполагалось, что кросс-платформенности не требуется. тем более что оно работает на куче платформ без переделок.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 11.05.11 06:05
Оценка:
Здравствуйте, мыщъх, Вы писали:
М>какого типа переполнения, интересно? все работает. то есть, конечно, проблемы есть, но не у си, а у тех, кто не умеет его готовить.
Умеющих мало, но думаю даже те кто умеют, будут рады помощи со стороны IDE/компилятора.

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

М>однако... программу откомпилировали на 64 бит маке и на 64 бит никсах. и даже древний код работает без переделок, где куча конструкций вида *((unsigned int*)p) == 0x11223344. конечно, так писать нельзя, но когда оно писалось, то предполагалось, что кросс-платформенности не требуется. тем более что оно работает на куче платформ без переделок.
С 32 на 64 понятно, а наоборот?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 11.05.11 06:08
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Конечно же возможна. Вон сколько очень хорошо переносимых языков

MZ>имеется. Хотя бы FORTRAN. Абсолютно переносимый язык, лишь бы
MZ>компилятор был.
Переносимость языка это кошено хорошо, но переносимость программ писаных на нём(а не только отдельных библиотек), лучше.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 11.05.11 06:09
Оценка:
Здравствуйте, IT, Вы писали:
IT>Что понимается под виртуальной машиной?
JVM, .NET, etc.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Кросплатформеность на уровне исходников
От: AlexCab LinkedIn
Дата: 11.05.11 06:42
Оценка:
AC>Как вы думаете, возможна ли полноценная кросплатформеность(в частности между 32 и 64 битными платформами), на уровне исходного текста(с перекомпиляцией но без измения исходного текста), без виртуальной машины(native)?
В общем на сколько я понял, есть два пути:
1.ВМ, в ущерб эфиктивности кода.
2.При помощи зависимых библиотек, он без возможности обратного переноса(со старшей на младшую платформу(с 64 на 32)).
Поправте если не прав.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[5]: Кросплатформеность на уровне исходников
От: ilnar Россия  
Дата: 11.05.11 08:01
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Здравствуйте, мыщъх, Вы писали:

М>>какого типа переполнения, интересно? все работает. то есть, конечно, проблемы есть, но не у си, а у тех, кто не умеет его готовить.
AC>Умеющих мало, но думаю даже те кто умеют, будут рады помощи со стороны IDE/компилятора.

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

М>>однако... программу откомпилировали на 64 бит маке и на 64 бит никсах. и даже древний код работает без переделок, где куча конструкций вида *((unsigned int*)p) == 0x11223344. конечно, так писать нельзя, но когда оно писалось, то предполагалось, что кросс-платформенности не требуется. тем более что оно работает на куче платформ без переделок.
AC>С 32 на 64 понятно, а наоборот?

а что смущает? все зависит от объемов обрабатываемых данных и их вида.
32 -> 64
во первых, можно тупо скомпилирвать программу 32битной, для 64битного ОС, если тебе не надо с громадными данными работать
во вторых, даже с конструкциями вида *((unsigned int*)p) == 0x11223344 могут случчиться проблемы, если не обеспечивать загрузку всего важного в адресном пространстве до 2Гб, и скорее придется отказаться от -fPIC, DSO
64 -> 32
если нет харкодед трюков, хитростей со свободными верхними битами указателей, ... то пренос с 64 бита на 32 особо не отличается от обратного: интеловский 32 битный процессор поддерживает 64 битные операции, имеются те же CAS2 для замены CAS.

в общем, если появится необходимость, перевести получится.
а если объемы данных небольшие, можно и не особо заморачиваясь перекомпилять код, как мыщъх, и надеяться, что 64битные фичи не используются, и проблем с кросплатформенностью не будет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.