Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Программирование на C++ в Ubuntu  (Прочитано 15428 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн oalizade

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Программирование на C++ в Ubuntu
« : 01 Март 2012, 22:54:18 »
Чем отличается программирование на Ubuntu от Windows? Пройдут ли все коды написанные на C++ в Windows и в Ubuntu? Можно об этом подробно?

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #1 : 01 Март 2012, 23:06:41 »
Чем отличается программирование на Ubuntu от Windows? Пройдут ли все коды написанные на C++ в Windows и в Ubuntu? Можно об этом подробно?


1. API и подходами.
2. Не все.
3. А что тут можно сказать, не зная, что у вас за код?
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн Olej

  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #2 : 02 Март 2012, 02:44:15 »
Чем отличается программирование на Ubuntu от Windows?
Прежде всего - компилятором: GCC в Linux (нет никаких Ubuntu в природе, есть Linux, а совсем уж точно - GNU/Linux), VC в Windows (у них, кстати, даже синтаксические правила языков С/С++ слегка отличаются, можно и на такое нарваться ;)).
Компилятор тянет за собой библиотеку ... С++ в вашем случае, библиотека С++ использует, в большинстве случаев, библиотеку С, а библиотека С - API (набор системных вызовов) в той ОС, где это всё происходит.   

Пройдут ли все коды написанные на C++ в Windows и в Ubuntu?
Нет, конечно ;), не пройдут.
Сам язык программирования, на котором пишется, это только верхушка айсберга, а его тело - API OS для которой это пишется.
P.S. чтоб не обманывать себя, и не потакать пустобрёхам, пишущим популярные книжки "для чайников", всяк программист должен определиться, в каких операционных системах он работает: Windows || Linux. Не бывает программистов, работающих одновременно для тех и других систем. 
P.P.S. совершенно другая культура: меняется всё, начиная с привычек и предпочтений, в Windows вы не представляете как можно жить за пределами IDE VisualC, в UNIX достаточно редко возникает вообще необходимость в IDE, хотя их здесь полно...

Можно об этом подробно?
Можно ;) :
Инструменты Linux для Windows-программистов
вот здесь есть любопытная книжка по специфике Linux:
Программирование для Unix/Linux


Пользователь решил продолжить мысль 02 Март 2012, 12:29:25:
Пройдут ли все коды написанные на C++ в Windows и в Ubuntu?
Этому делу в мировой IT индустрии уделено очень много сил и работы, многие проекты - многоплатформенные: Qt, Apache, OpenOffice, Asterisk, FreeSWITCH ... много. Но эта иллюзия достигается использованием какого-то межплатформенного промежуточного слоя: APR (The Apache Portable Runtime Project - язык С), boost (язык C++), JRE (язык Java - OpenOffice). Но даже при этом до переносимости потом ещё приходится пилить напильником.
« Последнее редактирование: 02 Март 2012, 13:01:29 от Olej »

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #3 : 02 Март 2012, 18:34:14 »
P.S. чтоб не обманывать себя, и не потакать пустобрёхам, пишущим популярные книжки "для чайников", всяк программист должен определиться, в каких операционных системах он работает: Windows || Linux.
На прикладном уровне можно писать код, который без проблем можно скомпилировать в экзешник, и даже upx'ом сжать, без участия винды. Конечно же, если всё это писать с помощью кроссплатформенных библиотек.

Оффлайн Olej

  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #4 : 02 Март 2012, 18:53:07 »
P.S. чтоб не обманывать себя, и не потакать пустобрёхам, пишущим популярные книжки "для чайников", всяк программист должен определиться, в каких операционных системах он работает: Windows || Linux.
На прикладном уровне можно писать код, который без проблем можно скомпилировать в экзешник, и даже upx'ом сжать, без участия винды.
Можно.
Если это по сложности что-то соизмеримое с "Hello World!" :) - до тех пор, пока не понадобится хоть какой системный вызов к ОС.
Даже элементарный printf() и тот в С ведёт себя в GCC & VC - в деталях по-разному.

А как бы вам понравилось на С в GCC вот такое:
static void* find_sym( const char *sym ) {
   static unsigned long faddr = 0; // static!!!
   // ----------- вложенная функция - расширение GCC ---------
   int symb_fn( void* data, const char* sym, struct module* mod, unsigned long addr ) {
      ...
   };
   // --------------------------------------------------------

   kallsyms_on_each_symbol( symb_fn, (void*)sym );
   return (void*)faddr;
}
- это из работающего кода модуля ядра Linux - не важно что это, я имел в виду вложенные функции a'la PASCAL.
И как бы это можно было перетащить в Windows??? ;)
И в GCC множество таких расширений, именно поэтому ядро Linux нельзя собрать никаким другим компилятором с С из многих существующих.

Конечно же, если всё это писать с помощью кроссплатформенных библиотек.
Конечно можно.
Только какое тогда это будет иметь отношение к "программирование на языке С++", это будет: программирование на языке переносимой библиотеки ;).


Пользователь решил продолжить мысль 02 Март 2012, 18:59:15:
На прикладном уровне можно писать код, который без проблем можно скомпилировать в экзешник,
Можно, но это если сильно стараться это делать. При этом код становится: громоздким, непонятным, избыточным, неэффективным... и др. "не" ;)
А зачем?
Там Win32 API, здесь POSIX - совершенно специфичные вещи.
Да, в некоторых (редких) случаях многоплатформенность в плюс - это для проектов рассчитывающих на миллионные тиражирования, массового применения: Qt ...
А в прикладных целевых разработках, под ТЗ заказчика, за устремления в многоплатформенность - убивать надо ;).
« Последнее редактирование: 02 Март 2012, 18:59:45 от Olej »

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #5 : 02 Март 2012, 20:34:15 »
...
в общем-то да, вы правы(Ну может быть в моментах про сложность написания кроссплатформенного кода немного перебрали с эпитетами) linux использует много фич gcc, поэтому сборка другими компиляторами затруднена. freebsd можно (было?) собрать с помощью pcc, gcc и clang

Оффлайн Olej

  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Программирование на C++ в Ubuntu
« Ответ #6 : 02 Март 2012, 20:50:33 »
linux использует много фич gcc, поэтому сборка другими компиляторами затруднена. freebsd можно (было?) собрать с помощью pcc, gcc и clang
юзерспейс приложения Linux тоже, в общем, собираются с помощью pcc, gcc и clang ... ещё cc из SolarisStudio (который даёт лучше код, чем gcс), но все они имеют свои особенности, начиная от опций, детализирующих компиляцию (что стреляет в сложных Makefile сборки); поэтому говорить о переносимости кода между операционными системами можно только студентам на лекциях ;)... реально - как повезёт ;), чаще - нет.
 

 

Страница сгенерирована за 0.075 секунд. Запросов: 26.