реклама на сайте
подробности

 
 
10 страниц V  « < 2 3 4 5 6 > »   
Closed TopicStart new topic
> С/С++, Почему до сих пор все сидят на древних языках вроде С и С++
juvf
сообщение Sep 1 2014, 04:04
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(ASN @ Aug 31 2014, 01:46) *
juvf
IMHO, ответ на вопрос "Почему до сих пор "сидят" на С/С++? " очень прост.
Потому, что в embedded большинство задач (и следовательно программистов) решают достаточно тривиальные задачи.
Для таких задач язык С прост и понятен. А также удобен и достаточен.

Чем си удобней с++? Чем си проще и понятней с++? Я не говорю об ооп. ООП и на си можно реализовать и на асме. Я говорю о с++. Я написал пример тривиального кода на с++. Перепишите этот же код на си, что в си-коде будет проще и понятнее?

Цитата
Вот тогда поймете чего действительно стоят 'плюшки' на C++.
О каких плюшках вы говорите? Я привел пример кода на с++ - где там плюшки, которые действительно стоят?
в с++ есть плюшка bool - чего она стоит?
в с++ есть плюшка for(int i = 0; i<10; i++) - чего стоит плюшка внутри for объявлять i?
в с++ есть плюшка передачи аргументов в функцию по умолчанию - чего стоит эта плюшка?

Меня услышали так "А мне не ясно нежелание писать на с++ с использованием ООП и STL, с использованием паттернов и т.п. в приложениях малого среднего размера".
А говорил я так "А мне не ясно нежелание писать на с++ в приложениях малого среднего размера". Зачем вообще изучать си и писать на нем ПО (за исключением поддержки старого), если есть с++? С++ почти полностью включает си. Т.е. можно изучить в с++ только ту часть, которая стоит столько же, сколько и в си, которая проста и понятна и с помощью которой можно решать тривиальные задачи. Если не нравиться ооп и плюшки - не используй их в коде, но пиши на с++. Пиши в стиле си, но на с++. Зато потом, если понадобится какойнить перегруз функции, или класс, или другая плюшка.... то без проблем добавил в код и поехал дальше. Не нужно изучать новый язык, не нужно переписывать си код на с++ и не нужно скрещивать в проекти си код с с++.

Кто-то считает что с++ это обязательно плюшки и дает уроки по чистому с++ как здесь. Но это не так. Не нужно перегружать код всякими ненужными плюшкам. Вот пример холоворда на с++
Код
#include <iostream.h>
#include <string.h>

class string
{
private:
  int size;
  char *ptr;

public:
  explicit string(const char* chrs = 0) : size(chrs ? strlen(chrs) : 0)
  {
    ptr = new char[size + 1];
    if (chrs)
      strcpy(ptr, chrs);
    else
      ptr[size] = 0;
  }

  string(const string &s) : size(s.size)
  {
    ptr = new char[size + 1];
    strcpy(ptr, s.ptr);
  }

  ~string()
  {
    delete [] ptr;
  }

  friend ostream &operator <<(ostream &, const string &);
  string &operator=(const char *);
  string &operator=(const string&);
};

ostream &operator<<(ostream &stream, const string &s)
{
  return(stream << s.ptr);
}

string &string::operator=(const string &s)
{
  this->~string ();
  new (this) string (s);
  return(*this);
}

string &string::operator=(const char *chrs)
{
  *this = string(chrs);
  return(*this);
}

int main()
{
  string str;

  str = "Hello World";
  cout << str << endl;

  return(0);
}
Убиться об стену! Тривиальная задача решена.... из пушки по воробъям! Зачем? Вы думаете что си не позволит начудить оверинженеринга? Ошибаетесь.
Go to the top of the page
 
+Quote Post
ASN
сообщение Sep 1 2014, 08:02
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



juvf
Дык, в моём сообщение и не было утверждения, что си удобней с++.
Просто исторически сложилось, что для ОМЭВМ сначала появились эффективные компиляторы С, а уже потом С++.
Поэтому и "переползали" на С, а не на С++. А в силу тривиальности задач на С и остались.
Если "с нуля", то конечно С++.
У нас теперь ВСЁ программное обеспечение разрабатывается на С++: специалист растёт в рамках одного языка. Это экономически выгодно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 1 2014, 08:27
Сообщение #48


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата
в с++ есть плюшка bool - чего она стоит?
в с++ есть плюшка for(int i = 0; i<10; i++) - чего стоит плюшка внутри for объявлять i?

Ничего не стоит. В C это тоже есть. C-99.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 1 2014, 10:46
Сообщение #49


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ASN @ Sep 1 2014, 11:02) *
juvf
Дык, в моём сообщение и не было утверждения, что си удобней с++.
Просто исторически сложилось, что для ОМЭВМ сначала появились эффективные компиляторы С, а уже потом С++.
Поэтому и "переползали" на С, а не на С++. А в силу тривиальности задач на С и остались.
Если "с нуля", то конечно С++.
У нас теперь ВСЁ программное обеспечение разрабатывается на С++: специалист растёт в рамках одного языка. Это экономически выгодно.


Надо понимать это поверх линукса вы пишите ВСЁ на C++ ? biggrin.gif

С++ нишевой язык не из-за своей недосягаемой могучести. А потому что его уже проехали.

Теперь гики косеют от Python, Swift, Go и проч. В психбольнице ничего не меняется.
Цель новых языков не что там ускорить, а сделать процесс увлекательным, о чем и пишет Apple в аннотации к Swift.

Хотел бы я посмотреть наколько быстрее напишет программист на C++ приложение для Kinetis по cравнению с программистом на C-и базируясь на инструментах и библиотеках предоставляемых Freescale.
Вот на 100% уверен, что C-и победит.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Sep 1 2014, 14:08
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(juvf @ Aug 30 2014, 09:28) *
А мне не ясно нежелание писать на с++ в приложениях малого среднего размера......

И мне не ясно нежелание писать на Форт (Forth) приложения малого и среднего размера (хотя как это оценить) sm.gif

Возможно это
Цитата(juvf @ Aug 30 2014, 09:28) *
Хотя наверно ясна... это консервативность...

или "нежелание" "неумение" расставаться со "своими" "скелетами в шкафу" или "ограничнность" восприятия иных реалий программирования.

Цитата(juvf @ Aug 30 2014, 09:28) *
т.е. если прогер в си как рыба в воде, а в с++ его в ступор вводит символы ::, то конечно ТОЛЬКО СИ. Но если ты знаешь с++ или ты не знаешь ни си, ни с++, то однозначно учи и пользуй с++. Пример: маленькая программа, холоворд на с++
Код
int main()
{
printf("hello world!");
}

Банально холоворд на Форт
Код
." Hello world!"

и так во многих моментах Форт реалий sm.gif

Цитата(juvf @ Aug 30 2014, 09:28) *
Зачем учить новый язык? везде нужно использовать с++.

Учить или хотя бы иметь представление для программиста разных языковых подходов.

Цитата(juvf @ Aug 30 2014, 09:28) *
Конечно при написании программы на с++ нужно адекватно оценивать возможности эмбэдэда и потребность в тех или иных плюшка. Там где достаточно массива интов, не нужно использовать std::list<MyClass>, где MyClass содержит в привате инт, и в паблике кучу методов для чтения/модификации этого инта.

Всё программирование в конечном счёте сводится к пересылкам одних ячеек памяти в другие (или одного потока данных процедуры к другой процедуре) с какими то преобразованиями при этом. А для этого многие искусственные абстракции типа опять ООПа не так важны. Достаточно иметь возможность делать векторным (переназначаемыми на разный код) некоторые процедуры в программе и по возможности избавляться от бездумного использования глобальных переменных.

P.S. Это мне "видится" такsm.gif Патерны проектирования для меня увы почти незнакомы т.к. мне не приходится вести "позиционные войны" с используемым языковым инструментарием (что подумаю то и запрограммирую).
Пример вызова цикла for из другого слова с передачей диапазона цикла (тоже банально просто) печати 10-ть раз Hello World
Код
: for  0 do ." Hello World" cr loop ;
: print_for  10 for ;
print_for

Вопросы?
и интересный аспект Форт творчества CC14 LIfe: Wild Demo - #1 'Forth DemoTool'
похожая направленность детского творчества в проекте reda4 программирование как игра.

Сообщение отредактировал Kopa - Sep 1 2014, 15:50
Go to the top of the page
 
+Quote Post
dxp
сообщение Sep 2 2014, 04:42
Сообщение #51


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Kopa @ Sep 1 2014, 21:08) *
Всё программирование в конечном счёте сводится к пересылкам одних ячеек памяти в другие (или одного потока данных процедуры к другой процедуре) с какими то преобразованиями при этом.

"Цель работы программиста - намагнитить быстро вращающиеся диски в нужных местах" (с).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Major
сообщение Sep 2 2014, 05:18
Сообщение #52


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Если кейл сделает полноценную поддержку C++11/14 будет прорыв. Писать код на старом стандарте уже нет возможности.
GCC хорош, но не самый айс. Clang (llvm) все руки не доходят посмотреть.
Однозначно выбирать C++ или другие языки. Язык C - это прошлое (хотя и не плохое прошлое).

Хотя и в C++ есть раздражители. После питона ставить фигурные скобочки утомляет, нет контрактов, по исключению нельзя размотать стек как в яве или питоне, лишняя многословность в шаблонах (плюс еще по мелочам). Если "корпорации" подхватят D, то будет неплохо лет через 5-10.

Я писал на яве для восьми битного Dallas еще 10 лет назад (если кто помнит были tini). После это поверил в яву. Отклик был приемлемый, работа с сетью на полной нагрузке (10мбит вроде).

Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 2 2014, 05:39
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



wacko.gif
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Sep 2 2014, 22:33
Сообщение #54


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(dxp @ Sep 2 2014, 08:42) *
"Цель работы программиста - намагнитить быстро вращающиеся диски в нужных местах" (с).


sm.gif)) в точку. правда больше для эпохи DOS.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 3 2014, 06:05
Сообщение #55


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Major @ Sep 2 2014, 08:18) *
Однозначно выбирать C++ или другие языки. Язык C - это прошлое (хотя и не плохое прошлое).


Пока линукс не перепишут на C++, этот C++ отстанется только приставкой к C-и для тех кто изнывает от скуки на работе.
И потом о нем будут вспоминать как о неком таком корявом расширении C-и появившемся в конце эпохи однопоточных языков. biggrin.gif
Go to the top of the page
 
+Quote Post
Major
сообщение Sep 3 2014, 08:07
Сообщение #56


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



А как связаны линукс и С++?
Про скуку просто смешно. Если Вы не используете:
1 автоматический вывод типов
2 static_assert
3 шаблоны (копипастите по случаю и без)
4 семантически безопасные контракты-классы (передаете указатели на структуры в функции)
5 про STL уже и так понятно, можно еще сказать про лямбды и семантику пеермещения
то Вы зря тратите время.
Прочитайте новый стандарт, или введение в него. Язык это не буковки и ключевые слова. Язык это фразы и ++ гораздо богаче С.
C++ тоже не идеал, но держаться за С (даже если это С99) сомнительная затея.

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 3 2014, 08:26
Сообщение #57


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Major @ Sep 3 2014, 11:07) *
А как связаны линукс и С++?
Про скуку просто смешно. Если Вы не используете:
1 автоматический вывод типов
2 static_assert
3 шаблоны (копипастите по случаю и без)
4 семантически безопасные контракты-классы (передаете указатели на структуры в функции)
5 про STL уже и так понятно, можно еще сказать про лямбды и семантику пеермещения
то Вы зря тратите время.
Прочитайте новый стандарт, или введение в него. Язык это не буковки и ключевые слова. Язык это фразы и ++ гораздо богаче С.
C++ тоже не идеал, но держаться за С (даже если это С99) сомнительная затея.


Я ща википедию открою и еще больше лабуды из C++ перечислю. wink.gif
А что нибудь нам реально показать из своей нетленки на C++ (для микроконтроллеров, разумеется) ?

А то с STL мы тут уже разобрались - http://electronix.ru/forum/index.php?showt...6&hl=median
Ничего впечатляющего. Слезы.
В IAR вообще катастрофа.
Go to the top of the page
 
+Quote Post
-fender-
сообщение Sep 3 2014, 09:27
Сообщение #58


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 18-03-09
Из: Минск
Пользователь №: 46 221



может не по теме, но навеяно хабром
выстрелить себе в ногу
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 3 2014, 09:42
Сообщение #59


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Русский язык еще древнее, чем C/C++. Почему, тем не менее, на нем продолжают говорить, а не переходят на более современные языки? sm.gif
Go to the top of the page
 
+Quote Post
Major
сообщение Sep 3 2014, 09:59
Сообщение #60


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



По медиане - написано просто страшно, так делать нельзя. Это говнокод (и это не оскорбление).
По коду, в конце недели (суббота) могу выложить, если есть практический интерес.
Могу переписать медиану, так чтобы был использован std::nth_element. Сравним.


Go to the top of the page
 
+Quote Post

10 страниц V  « < 2 3 4 5 6 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01552 секунд с 7
ELECTRONIX ©2004-2016