Не хочу боле захламлять вопрос в котором дискуссия началась.
Посему потрудитесь ответить тут.
Человек спросил, какой бы выбрать язык, чтобы он был компиллируемым и кросплатформенным.
Вы первым делом назвали ассемблер, рьяно отстаивая что Java и даже C в этом вопросе хуже. Объяснитесь, в таком случае, почему вы считаете что ассемблер - первый язык, попадающий под данный критерий
(А судя по вашим словам - единственный). Как он поможет решить вопрос с кроссплатформенностью?
И второй вопрос. Вы доказываете что версии гимпа под винду и под линукс написаны разными разработчиками с нуля, каждая заново на своей платформе, и вероятно, на разных языках. В то время как вики однозначно говорит, что гимп реализован целиком на С с использованием кроссплатформенных библиотек.
Потрудитесь это доказать.
Примечание:
Так. Еще раз. Давайте без демагогии, я жду прямого ответа. Вот цитирую ваши слова:
>Чтоб и все платформы и чтоб компилировался да еще и в бинарик.. это ж правда тока Ассемблер делает
Раскройте смысл этого предложения. Что именно тут делает "только ассемблер"?
Аналогий не надо, отвечайте по сути.
Примечание:
Не заговаривайте мне зубы, на меня это не действует.
Прекратите исторгать из себя потоки бесполезных слов, отвечайте по сути.
Много-много библиотек написаны на том же С, говорим исключительно про гимп а не про абстрактные разработки. Гимп разработан на С, библиотеки кроссплатформенные, никто с нуля не переписывает, они архитектурно построены так, что позволяют писать приложение, которое можно скомпилять под винду и линукс. Qt тоже это позволяет. Так пишут. Гимп, в частности, написан таким образом. Вы с этим будете спорить?
Но интереснее всего мне ваш ответ про ассемблер. Хватит пустой болтовни, назовите конкретные свойства языка, которые в данном вопросе (построение кроссплатформенных приложений) являются преимуществами перед С, С++, Java, даже перед шарпом с его моно. Конкретные. Пунктам.
Примечание:
>> Что именно тут делает "только ассемблер"
>Компилируется в бинарный код на всех (известных) платформах.
Оооо, мои опасения подтвердились, "коллега". Я с прискорбием заявляю - ассемблер вы видели только на картинках, о программировании вы пытаетесь спорить находу читая вики.
В понятия "бинарный код" нету. В машинный код на всех платформах компилируется C, C++, Pascal, теперь вон даже к питону прикрутили компиллер.
В бинарник компилятся вообще все компилируемые языки, ява в том числе - поэтому они и названы "компилируемыми". Ява компилится в байткод жвм, шарп - в мсил, байткод дотнета.
Плюс замечу, что английский вы тоже не знаете, т.к. в вашей цитате черным по белому написано:
ассемблер специфичен для конкретной архитектуры, в противовес большинству высокоуровневых языков, которые, в основном, портируемы (кроссплатформенны)
Примечание:
k_max, вы не правы слегка. Язык ассемблера это мнемоническая запись машинных кодов. Из С и иже с ним асмовый код не порождается обычно, порождаются сразу машинные коды, а не асмовый листинг, потом ассемблирование.
Прямого ответа мы не дождемся, конечно. Человек показал полную свою некомпетентность в этом вопросе, он хватает рандомные цитаты из вики и кидает сюда, не заботясь даже о том, чтобы они если не подтверждали, то хотя бы не опровергали его слова.
Примечание:
k_max, ему скармливаются ассемблерные файлы, которые вы можете прилинковать к своей проге.
Если у вас в проекте есть С-файлы и S-файлы, то гцц сгенерит объектные модули из C, а ассемблер - из S.
А линкер это все слинкует.
Ну где же наш доцент, я все жду что он объявится и наконец ответит)
dimasokol, про платформенную зависимость, то бишь от аппаратной платформы, от проца, я даже не стал упоминать, вы же видите - даже простейший вопрос порождает у доцента поток сознания, и получить прямой ответ от него почти нереально.
Примечание:
k_max, мой промах, признаю. GCC в самом деле, судя по описания, порождает асм. Но далеко не все компиллеры так делают)
Примечание:
Оооо, доцент объявился)
Как там, в фильме джентельмены удачи, говорилось?
"Слышь, доцент?" Не надо мне опять пустых слов)
>забыли о малом кроссплатформенность имеет очень узкие задачи. И они не решаются болтовней переписке.
Ну куда, куда вас опять понесло?) Какие узкие задачи? Какая переписка?) Вам уже не только я, но и другие люди задают прямой вопрос - расскажите, пожалуйста, чем ассемблер кроссплатформенней C или явы)
Какие его свойства позволяют вам это сказать. По пунктам.
Вики я верю, вы ее читать только не умеете. В том абзаце ничего не сказано, повторяю ВООБЩЕ ничего не сказано про то что ассемблер кроссплатформенен. Там сказана полная противоположность.
Поэтому, дорогой доцент, поясните, пожалуйста, по пунктам широкой аудитории, в чем преимущество ассемблера при построении кроссплатформенных приложений, по сравнению с Java и C.
А также поясните, что вы имеете в виду, говоря что только ассемблер порождает "бинарный код".
А также - что вы подразумеваете под "бинарным кодом", уж не машинный ли код?
А также - ответьте на вопрос dimasokol, только без абстракций. Вот есть три устройства. Одно на ARM, второе на SPARC, третье на x86. На всех крутится linux. Что в данном случае можно сказать о кроссплатформенности программы на C, программы на Java, программы на языке ассемблера?
Примечание:
Так, мои дополнения, увы, подходят к концу. Хотя, учитывая ваш словесный понос и нежелание отвечать по сути - не удивительно, я уж не знаю сколько еще раз вам повторить вопрос.
Ваша последняя реплика означает, что ответа мы так и не получим от вас, прямого и точно, я правильно понимаю? По пунктам вы не ответите?
>Не забывайте что это не ученая дискуссия - а все го лишь обмен мнениями :) И "прямой вопрос" с "прямым ответом" мы задаем на экзаменах а не в топиках на ВиО
В принципе, что и требовалось доказать. Аль все-таки попытаетесь, вдруг уже нагуглили?
Что "кто из них платформа"? Три разных аппаратных платформы, да. Три разных архитектуры процессора, три разных набора команд. Одна программная платформа - ОС Linux, портированная на все три аппаратных платформы.
И мой вопрос, изложенный выше, который ждет вашего ответа по пунктам.
Будете продолжать позориться, аль закрывать вопрос?
Примечание:
Алилуйа)
Вы наконец-то перестали скрывать свое невежество а выплеснули его на нас и оно расцвело пышным цветом)
Спасибо, дорогой доцент неизвестной кафедры, вы очень повеселили меня, и, надеюсь, окружающих. На будущее я вам дам небольшой совет - мы не гуманитарии, пустой болтовней незнание не скроешь, постарайтесь в такой просак не попадать больше, если чего-то не знаете, то молчите.
А ваши слова, служащие распиской в том, что вы о программировании узнали за пять минут до разговора, из вики, достойны увековечения в анналах истории:
>Под Кроссплатформенной задачей мы понимаем переписку между одной Операционной Системой и Другой. Например в мире Мелкомягких Клиентское приложение (Windows XP) разговаривает с Серверной системой (Ну например NT).
> пример этот я привел не случайно - в чем его загвоздка? правильно - никогда ни на каком Си эти две системы друг друга не поймут. Вернее не так - одна другую поймет - вот обратно нечего не получит. Вот и пример одной и той же аппаратной платформы от одного и того же изготовителя без определенного вмешательства специальных библиотек не понимающих друг друга. Что сделал майкрософт? Правильно - слепил .NET в основе у которого - (Вы не поверите !!! вы сейчас будете смеяться !!!) язык XML. И научил этому языку все свои платформы. Во как.
Это, не побоюсь этого слова, гениально))
Меня, как инженера разработчика и аппаратных и программных средств очень, очень радует ваше определение)
И того что такое "кроссплатформенные приложения", и того как работает дотнет (какой байткод? какая виртуальная машина? какой джит? ХМЛ наше все!), и всего-всего прочего.
Вопрос я не закрываю пока, вдруг кто захочет приобщиться к вашей мудрости)
Это, увы, мое последнее дополнение, поэтому я вынужден прекратить эту дискуссию - хотя, собственно, ваш последний ответ делает ненужным какие-либо дополнения)
Примечание:
Так. Уважаемый. У меня осталось одно дополнение, о котором я забыл, поэтому постараюсь до вас донести мысль - честно, не стал бы еще раз пытаться, но вот тут поступили сведения что вы не идиот и не тролль, а, вероятно, просто запутались в терминологии. И примите к сведению - излагать мысли я вас просил *без лишних слов*, а не без терминов.
Итак, вдумчиво читайте:
1) То что вы понимаете под кроссплатформенностью, никогда так не называлось. Это клиентско-серверная модель.
Кроссплатформенность же, это свойство программного обеспечения, означающее, что оно может быть запущено на разных программных платформах (как пример - Windows и Linux являются таковыми платформами, Gimp кросплатформенный.
2) В модели клиент-сервер, особенно в энтерпрайз системах в самом деле часто используется обмен данными в формате ХМЛ. Никакого отношения к языку программирования они не имеют, это просто протокол, формат данных.
3) В основе дотнета не лежит хмл, потому что дотнет это не только клиентско-серверные взаимодействия. В основе дотнета лежит виртуальная машина, исполняющая байткод языка msil. А у явы - ЖВМ, исполняющая ява-байткод.
За счет этого программы на шарпе и яве кросплатформенны, т.к. портировать достаточно только виртуальную машину. Сами программы же запустятся без перекомпиляции и под линуксом и под виндой, если там есть вирт. машина.
4) Ассемблер - язык привязанный к аппаратной платформе, поэтому его нельзя использовать для построения приложений, которые можно запускать как на арме, так и х86, спарк и так далее. Линукс - кросплатформенный в плане аппаратной платформе. Это значит я могу его перекомпилять под арм и х86, например. Потому что он написан на С. На асме там только машинно-зависимый код (который лежит в arch), и для каждой архитектуры его портируют отдельно, на асм того процессора, на котором его запускают.
Все компилируемые языки порождают бинарный код. Некоторые (те что не на ВМ) - даже машинный. Приложения на них могут быть кроссплатформенны за счет того, что их можно иногда перекомпилять под другую ос. Это достигается путем использования кроссплатформенных библиотек. Библиотеки кроссплатформенны, т.к. в них есть обертки системных вызовов. Системные вызовы специфичны для ОС, они препятствуют кроссплатформенности.
Ассемблер не имеет никаких преимуществ в портируемости перед С, только недостатки в силу привязки к аппаратным средствам. Портируемость между программными платформами вообще никак не разрешается ни асмом, ни С - т.к. основное препятствие - сис. вызовы. Зато ява и шарп дают средство обойти это, виртуальную машину.
Это вам понятно? Я не знаю что там с вами, может вам плохо, аль вы выпили (если вы в самом деле не идиот, конечно), но надеюсь помутнение пройдет и вы осознаете бред, который несли.
Все, дополнения кончились.