Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,055
1

C vs C++. Прикладное ПО, десктопные приложения

31.08.2017, 17:36. Показов 3124. Ответов 25
Метки нет (Все метки)

Здравствуйте.
Есть вопрос касательно C и C++.
Кто может пожалуйста, сравните эти два языка.
Мне не раз говорили, что Си это низкий уровень. На сколько это истина?
Если я хочу программировать прикладное ПО, в основном десктопные приложения, то что лучше и проще, C или C++?
Если хочу программировать клиентсерверные приложения, то что лучше?
Мне говорили, что структура кода на Си проще, а именно кодить всё же проще на C++.
Всем заранее благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2017, 17:36
Ответы с готовыми решениями:

Пишут ли десктопные приложения на Java?
Доброго времени суток эксперты! Очень интересует такая тема - хочу связать себя с...

Как писать на питоне десктопные оконные приложения?
можно ли и если да то как писать на питоне десктопные оконные приложения? Добавлено через 33...

Десктопные матери + RAID
Возможно глупый вопрос, но информацией не владею. Как узнать на какой материнской плате и...

Приватные десктопные вьюшки, чтоб их...
Доброе время суток! Знаю что сейчас гуру скажут, что использование приватных десктопных вьюх это...

__________________
25
Native x86
Эксперт Hardware
4161 / 2549 / 747
Регистрация: 13.02.2013
Сообщений: 8,255
31.08.2017, 18:09 2
Цитата Сообщение от jonikster Посмотреть сообщение
Мне не раз говорили, что Си это низкий уровень. На сколько это истина?
Смотря с чем сравнивать. По сравнению с JavaScript или каким-нибудь Python, да, низкий. Если сравнить с Go или Pascal, но тоже низкий, но уже не намного ниже. А если с Assembpler или PLM, то будет высоким.

Цитата Сообщение от jonikster Посмотреть сообщение
Если я хочу программировать прикладное ПО, в основном десктопные приложения, то что лучше и проще, C или C++?
На чистом C оконные приложения писать довольно муторно, тут логичнее использовать C++, но этот язык на сегодня стал таким сложным, что сколь-либо востребованную на рынке квалификацию вам придется нарабатывать годами.

Цитата Сообщение от jonikster Посмотреть сообщение
Мне говорили, что структура кода на Си проще, а именно кодить всё же проще на C++.
C как язык прост и лаконичен, но это затрудняет разработку сложных программ. C++ имеет мощные объектные средства и развитые графические библиотеки, но сам язык, как я уже написал, превратился в монстра.
0
92 / 76 / 31
Регистрация: 29.08.2017
Сообщений: 188
31.08.2017, 18:33 3
Цитата Сообщение от jonikster Посмотреть сообщение
Если я хочу программировать прикладное ПО, в основном десктопные приложения, то что лучше и проще, C или C++?
Если хочу программировать клиентсерверные приложения, то что лучше?
Почему не рассматривается C#?
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,055
31.08.2017, 18:53  [ТС] 4
LazySlacker, почему не рассматривается. Просто последние версии NET Framework не доступны под XP, также не полная совместимость с линуксом. А так идея очень хороша.
quwy, соглашусь с вами о плюсах, но увы у меня нет выбора.
Мне нужно разрабатывать в основном онлайн игры, а начать я хочу с MUD игр. Да, из-за того что не нужна графика автоматическая работа с памятью мешать не будет, но увы.
C# - не имеет полностью совместимости с Linux, да и на Windows XP не поставить последнюю версию NET Framework.
Java - никогда с ним не сталкивался, но по рассказам жуть.
Python - Всё супер. Но скорость и предназначиннасть...
Остается или C или C++.
Но по C++ нет нормальной литературы.
0
46 / 74 / 6
Регистрация: 10.08.2013
Сообщений: 237
31.08.2017, 19:04 5
Цитата Сообщение от jonikster Посмотреть сообщение
Но по C++ нет нормальной литературы.
Вы уверены, что хорошо искали? Здесь на форуме есть тема с кучей книг: Литература C++
0
92 / 76 / 31
Регистрация: 29.08.2017
Сообщений: 188
31.08.2017, 19:23 6
Обратите внимание на языки Go, D и HaXe. А также, как бы смешно это ни звучало, на BlitzBasic и PureBasic. А вообще мне кажется, что Вы слишком заморочились с выбором языка, можно хоть на Лиспе игрушки писать - https://www.taoeffect.com/blog... ntax-away/
0
Заклинатель змей
606 / 505 / 212
Регистрация: 30.04.2016
Сообщений: 2,417
31.08.2017, 19:35 7
jonikster,
Цитата Сообщение от jonikster Посмотреть сообщение
Просто последние версии NET Framework не доступны под XP
XP устарел, переходите на Win 7 / 10. Под Linux пишется Mono -- открытый порт .Net
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,055
31.08.2017, 19:54  [ТС] 8
LazySlacker, напишите мне MUD на лиспе)))))))
DobroAlex, если научите как запустить семёрку под комп с 2 гб оперативки и процессором x86 Family 15 Model 4 Stepping 9 GenuineIntel ~3000 МГц без лагов, то с удовольствием. У меня семёрка даже с отключёнными эффектами если запущен браузер, плеер какой нибудь и еще что-то, уже всё. Лаги огроменные.
0
946 / 685 / 226
Регистрация: 30.06.2015
Сообщений: 3,654
Записей в блоге: 38
31.08.2017, 20:43 9
Цитата Сообщение от jonikster Посмотреть сообщение
Мне не раз говорили, что Си это низкий уровень. На сколько это истина?
Низкий уровень это ассемблер. Си это высокий уровень. С++ это высокий уровень с обьектами. Си это высокий уровень без обьектов из коробки, но с возможностью их эмуляции если сильно хочется.
На нём можно разрабатывать как десктопные приложения, так и игры. К нему есть большая пребольшая куча разных библиотек, в том числе графических. Причём это будет достаточно простым делом, в отличие от ++, которые надо изучать 10 лет, а потом понять что это время прошло даром(хорошо, что минусы отменили).
Короче говоря си это надёжный инструмент, который никогда не подведёт если пользоваться им с умом.
Си позволяет программу держать под полным контролем и не полагаться на компилятор.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,055
01.09.2017, 07:44  [ТС] 10
CoderHuligan, очень интересный рассказ о C. Только вот управление прогой и т.д, небось на это уходят тонны кода.

Добавлено через 8 часов 58 минут
С выбором определился.
C++.
C проще изучать, но не использовать. Это увы правда.
0
735 / 540 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
01.09.2017, 11:11 11
Цитата Сообщение от jonikster Посмотреть сообщение
DobroAlex, если научите как запустить семёрку под комп с 2 гб оперативки
у меня 10-ка вполне на похожем железе
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
01.09.2017, 11:23 12
Цитата Сообщение от jonikster Посмотреть сообщение
C проще изучать, но не использовать. Это увы правда.
Нет, не правда. Клиентскую часть с окошками действительно лучше на С++ делать, а вот серверную на С.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5722 / 3433 / 2439
Регистрация: 22.11.2013
Сообщений: 9,644
Записей в блоге: 1
01.09.2017, 12:51 13
Вот чего очень сильно не хватает в Си -- это передачи параметров по ссылке без необходимости использования в каждой точке вызова перед фактическим параметром оператора взятия адреса &.
C
1
2
3
4
void f(int *t);
...
  int a, b, c;
  f(&a); f(&b); f(&c);
А было б здорово:
C++
1
2
3
4
void f(int &t);
...
  int a, b, c;
  f(a); f(b); f(c);
Pascal
1
2
3
4
5
function f(var t: Integer);
...
var a, b, c: Integer;
...
  f(a); f(b); f(c);
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
01.09.2017, 12:58 14
Цитата Сообщение от bormant Посмотреть сообщение
А было б здорово
... сидеть, вспоминать - по ссылке параметры передаются или по значению.
2
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5722 / 3433 / 2439
Регистрация: 22.11.2013
Сообщений: 9,644
Записей в блоге: 1
01.09.2017, 13:03 15
Цитата Сообщение от easybudda Посмотреть сообщение
сидеть, вспоминать - по ссылке параметры передаются или по значению
При написании все равно придется вспоминать, нужно же решить, ставить "&" или нет

Вот при чтении да, есть разница. Выходит, читать легче, писать сложнее (нет, писать не одинаково, писать было бы почти всегда без "&").
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
01.09.2017, 15:17 16
Цитата Сообщение от bormant Посмотреть сообщение
При написании все равно придется вспоминать, нужно же решить, ставить "&" или нет
Компилятор напомнит. На самом деле (моё конечно мнение, относитесь, как хотите) язык С вполне себе самодостаточный и всякие рюшечки, которые в других языках привычны и под час действительно удобны (те же значения параметров по умолчанию в С++ к примеру) этот язык только испортят. Он хорош таким, какой он есть. К тому же по мере надобности С всё-таки развивается. Много нового и полезного в С 99 было добавлено. В С 11 тоже можно полезные новшества отыскать...
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5722 / 3433 / 2439
Регистрация: 22.11.2013
Сообщений: 9,644
Записей в блоге: 1
01.09.2017, 15:40 17
Цитата Сообщение от easybudda Посмотреть сообщение
Компилятор напомнит
По скорости компиляции, конечно, не однопроходный паскаль, но и не C++
А вот про "напомнит" -- не напомнит, если типы параметра и адреса преобразуемы друг в друга, нельзя на это надеяться...

В остальном: какой есть такой и есть, что тут поделаешь.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
01.09.2017, 16:03 18
Цитата Сообщение от bormant Посмотреть сообщение
не напомнит, если типы параметра и адреса преобразуемы друг в друга, нельзя на это надеяться...
Разве-что вместо указателя на void указатель на что-то другое подсунуть, или наоборот. В остальных случаях как минимум ругнётся.

Добавлено через 5 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
unsigned func_u(unsigned * a) {
    return *a + 1;
}
 
int func_i(int * a) {
    return *a + 1;
}
 
int main(void) {
    unsigned n = 13;
    int d = 69;
    
    printf("%d + 1 = %d\n", n, func_i(&n));
    printf("%u + 1 = %u\n", d, func_u(&d));
    
    return 0;
}
Код
[andrew other]$ gcc -Wall byrefs.c 
byrefs.c: In function ‘main’:
byrefs.c:15:2: warning: pointer targets in passing argument 1 of ‘func_i’ differ in signedness [-Wpointer-sign]
  printf("%d + 1 = %d\n", n, func_i(&n));
  ^
byrefs.c:7:5: note: expected ‘int *’ but argument is of type ‘unsigned int *’
 int func_i(int * a) {
     ^
byrefs.c:16:2: warning: pointer targets in passing argument 1 of ‘func_u’ differ in signedness [-Wpointer-sign]
  printf("%u + 1 = %u\n", d, func_u(&d));
  ^
byrefs.c:3:10: note: expected ‘unsigned int *’ but argument is of type ‘int *’
 unsigned func_u(unsigned * a) {
          ^
[andrew other]$
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5722 / 3433 / 2439
Регистрация: 22.11.2013
Сообщений: 9,644
Записей в блоге: 1
01.09.2017, 16:13 19
Ну как ругнется, предупреждение же (про -Werror в курсе).

Изначально говорил про того же поля ягодки:
C
1
2
3
4
5
6
7
int f(int *);
int g(int);
int main(void) {
  f(0);  f(1);
  g(f);  g(main);
  return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
01.09.2017, 16:41 20
Цитата Сообщение от bormant Посмотреть сообщение
Изначально говорил про того же поля ягодки
Только на
Цитата Сообщение от bormant Посмотреть сообщение
f(0);
не ругнётся. А если на предупреждения внимание не обращать, то независимо от ЯП чудес не оберёшься...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2017, 16:41

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Генерация БД и прикладное ПО
Здравствуйте. Ищу удобную среду для проектирования и генерации схемы БД. Чтобы там.... меню...

Собственное прикладное ПО
Здравсвуйте, у меня вопрос. Я хочу создавать свое прикладное программое обеспечение для windows....

FAQ Прикладное
Эта тема - &quot;дочка&quot; темы: https://www.cyberforum.ru/pascal/thread250560.html &gt; Форум программистов...

Разработать прикладное ПО
Как эта программа будет выглядеть в Delphi...(И я знаю что там меняется ввод/вывод,но мне нужно как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.