Изучение Си после C++?
От: BadCats  
Дата: 23.07.19 17:05
Оценка:
Посоветуйте пожалуйста курсы или книги про Си, которые демонстрируют его отличие от C++ — т.е материал по Си — не для начинающих, позволяющий освоить язык как "дополнительный", в том смысле, что его изучение будет не первым.
c
Re: Изучение Си после C++?
От: lpd Черногория  
Дата: 23.07.19 17:08
Оценка: +2
Здравствуйте, BadCats, Вы писали:

BC>Посоветуйте пожалуйста курсы или книги про Си, которые демонстрируют его отличие от C++ — т.е материал по Си — не для начинающих, позволяющий освоить язык как "дополнительный", в том смысле, что его изучение будет не первым.


Не в языке программирования дело, а в технологиях: Linux/сети/многопоточность/базы данных/драйвера. Их и стоит изучать. Со знанием C++ в C будет мало нового.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 23.07.2019 17:09 lpd . Предыдущая версия .
Re[2]: Изучение Си после C++?
От: VladFein США  
Дата: 23.07.19 17:17
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Со знанием C++ в C будет мало нового.


Вопрос, вероятно, о том, чего будет не хватать...
Re[3]: Изучение Си после C++?
От: pagid Россия  
Дата: 23.07.19 17:56
Оценка: +3
Здравствуйте, VladFein, Вы писали:

VF>Вопрос, вероятно, о том, чего будет не хватать...

Там проще описать что там есть, чем, то чего не будет хватать.
Re[2]: Изучение Си после C++?
От: SomeOne_TT  
Дата: 23.07.19 18:25
Оценка: +1
Здравствуйте, lpd, Вы писали:

lpd>Не в языке программирования дело, а в технологиях: Linux/сети/многопоточность/базы данных/драйвера. Их и стоит изучать. Со знанием C++ в C будет мало нового.


Не соглашусь. На сях пишут совершенно иначе, нежели на плюсах. Я бы сам с удовольствием почитал бы про типовые практики и организацию программ на си. В данный момент единственный мне известный солидный источник знаний — это исходники на гитхабе.
Re[3]: Изучение Си после C++?
От: AeroSun  
Дата: 24.07.19 09:21
Оценка: 55 (6) +5 :))) :))) :)
Здравствуйте, SomeOne_TT, Вы писали:

SO_>Не соглашусь. На сях пишут совершенно иначе, нежели на плюсах. Я бы сам с удовольствием почитал бы про типовые практики и организацию программ на си. В данный момент единственный мне известный солидный источник знаний — это исходники на гитхабе.


А что там собственно изучать? Там же всё просто как палка. Организация там одна — описываешь данные структурой (ctx) и начинаешь вокруг наворачивать методы с очень_длинными_названиями_описывающие_и_проблему_и_контекст.
Кому букв не подвезли — у того тарабарщина в названиях — dtadrrprf, amg_opt, и т.п. Естественно на комментарий букв им тоже не хватает.
У любителей "мета"-программирования всё работает на макросах из макросов из макросов из макросов...
И кругом ctx, ctx, ctx, ctx...
Re: Изучение Си после C++?
От: kov_serg Россия  
Дата: 24.07.19 09:48
Оценка: +1
Здравствуйте, BadCats, Вы писали:

BC>Посоветуйте пожалуйста курсы или книги про Си, которые демонстрируют его отличие от C++ — т.е материал по Си — не для начинающих, позволяющий освоить язык как "дополнительный", в том смысле, что его изучение будет не первым.

Тоже ищу такую книгу. Везде описание только самого инструмента, но практики его применения и не особенностей его использования, ни карты расположения граблей.
Сразу после C++ писание на С даётся тяжко, чувствуешь себя как со связанными руками. Но со временем приходит понимание что писать можно на чем угодно. Особенно воодушевляют примеры которые при "правильном" написании на C++ занимают десяток страниц, а тоже самое на C десяток строк. Просто топорно не в общем виде, но работает как надо.

И да: настоящий физик может писать фортраном на любом языке.
Re: Изучение Си после C++?
От: Maniacal Россия  
Дата: 24.07.19 13:04
Оценка:
Здравствуйте, BadCats, Вы писали:

BC>Посоветуйте пожалуйста курсы или книги про Си, которые демонстрируют его отличие от C++ — т.е материал по Си — не для начинающих, позволяющий освоить язык как "дополнительный", в том смысле, что его изучение будет не первым.


Тут достаточно просто: C = C++ — ООП — stdlib — C++ Exceptions — new/delete
От ООП только структуры, вместо стандартных контейнеров — самописные, вместо стандартных функций — платформозависимые в основном, вместо C++-исключений структурные исключения, вместо new/delete — malloc/free
Функции рекомендуется группировать в файлы по объединяющему логическому признаку, т.е. как и в классах, один класс = один заголовочный и один файл исходников. В заголовочном описываются "экспортируемые" прототипы функций и глобальные переменные из исходника в виде "extern".
Re[2]: Изучение Си после C++?
От: Stanislav V. Zudin Россия  
Дата: 24.07.19 13:16
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>От ООП только структуры, вместо стандартных контейнеров — самописные, вместо стандартных функций — платформозависимые в основном, вместо C++-исключений структурные исключения, вместо new/delete — malloc/free


Полиморфизм реализуется вручную при помощи указателей на функции.
Вот стандартных контейнеров не хватает.
Макросы вместо шаблонов это жесть.
А в остальном жить можно.
_____________________
С уважением,
Stanislav V. Zudin
Re[2]: Изучение Си после C++?
От: kov_serg Россия  
Дата: 24.07.19 14:05
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Функции рекомендуется группировать в файлы по объединяющему логическому признаку, т.е. как и в классах, один класс = один заголовочный и один файл исходников. В заголовочном описываются "экспортируемые" прототипы функций и глобальные переменные из исходника в виде "extern".

И вместо одной монолитной программы которая умеет всё куча независимы модулей из которых строются большие уже на языках типа bash, python, perl и т.п.
Re[2]: Изучение Си после C++?
От: sergey2b ЮАР  
Дата: 24.07.19 14:13
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Сразу после C++ писание на С даётся тяжко, чувствуешь себя как со связанными руками. Но со временем приходит понимание что писать можно на чем угодно. Особенно воодушевляют примеры которые при "правильном" написании на C++ занимают десяток страниц, а тоже самое на C десяток строк. Просто топорно не в общем виде, но работает как надо.


а можно пример когда такая оазница в коде
Re[3]: Изучение Си после C++?
От: Maniacal Россия  
Дата: 24.07.19 14:47
Оценка:
Здравствуйте, kov_serg, Вы писали:

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


M>>Функции рекомендуется группировать в файлы по объединяющему логическому признаку, т.е. как и в классах, один класс = один заголовочный и один файл исходников. В заголовочном описываются "экспортируемые" прототипы функций и глобальные переменные из исходника в виде "extern".

_>И вместо одной монолитной программы которая умеет всё куча независимы модулей из которых строются большие уже на языках типа bash, python, perl и т.п.

Нет, куча .obj-файлов, которые потом линкуются в одну программу
Re[3]: Изучение Си после C++?
От: Maniacal Россия  
Дата: 24.07.19 14:51
Оценка: 4 (1)
Здравствуйте, sergey2b, Вы писали:

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


_>>Сразу после C++ писание на С даётся тяжко, чувствуешь себя как со связанными руками. Но со временем приходит понимание что писать можно на чем угодно. Особенно воодушевляют примеры которые при "правильном" написании на C++ занимают десяток страниц, а тоже самое на C десяток строк. Просто топорно не в общем виде, но работает как надо.


S>а можно пример когда такая оазница в коде


Из бородатого юмора:

#include
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;

for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}


#include 
#include 

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

public:
  string() : size(0), ptr(new char('\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 *);
};

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

string &string::operator=(const char *chrs)
{
  if (this != &chrs)
  {
    delete [] ptr;
    size = strlen(chrs);
    ptr = new char[size + 1];
    strcpy(ptr, chrs);
  }
  return(*this);
}

int main()
{
  string str;

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

  return(0);
}


Там ещё дальше есть с применением COM
Re[4]: Изучение Си после C++?
От: kov_serg Россия  
Дата: 24.07.19 16:07
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Нет, куча .obj-файлов, которые потом линкуются в одну программу

Для это есть либы
Re[4]: Изучение Си после C++?
От: AeroSun  
Дата: 24.07.19 19:38
Оценка:
ну, только в юморе разве что
Re[3]: Изучение Си после C++?
От: rg45 СССР  
Дата: 24.07.19 20:57
Оценка: +4
Здравствуйте, Stanislav V. Zudin, Вы писали:


SVZ>Полиморфизм реализуется вручную при помощи указателей на функции.

SVZ>Вот стандартных контейнеров не хватает.
SVZ>Макросы вместо шаблонов это жесть.

+1

SVZ>А в остальном жить можно.


На мой взгляд, самая ощутимая проблема C по сравнению с C++ — это невозможность использования RAII.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[3]: Изучение Си после C++?
От: AleksandrN Россия  
Дата: 24.07.19 21:18
Оценка:
Здравствуйте, kov_serg, Вы писали:

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


M>>Функции рекомендуется группировать в файлы по объединяющему логическому признаку, т.е. как и в классах, один класс = один заголовочный и один файл исходников. В заголовочном описываются "экспортируемые" прототипы функций и глобальные переменные из исходника в виде "extern".

_>И вместо одной монолитной программы которая умеет всё куча независимы модулей из которых строются большие уже на языках типа bash, python, perl и т.п.

Как слинкуешь, так и будет. Можешь отдельные компоненты сделать, можешь статические или динамические библиотеки, можешь один исполняемый файл сделать. На Си можно всё.
Re[3]: Изучение Си после C++?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 24.07.19 21:25
Оценка:
Здравствуйте, SomeOne_TT, Вы писали:

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


lpd>>Не в языке программирования дело, а в технологиях: Linux/сети/многопоточность/базы данных/драйвера. Их и стоит изучать. Со знанием C++ в C будет мало нового.


SO_>Не соглашусь. На сях пишут совершенно иначе, нежели на плюсах.


Конечно также, но иначе. Там есть пара приемов, чтобы занятые ресурсы корректно освобождать, но это выглядит как говно. Поэтому в основном пишут так же красиво, как на плюсах, забивая на всё остальное.
Маньяк Робокряк колесит по городу
Re[4]: Изучение Си после C++?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 24.07.19 21:33
Оценка:
Здравствуйте, Maniacal, Вы писали:


_>>>Сразу после C++ писание на С даётся тяжко, чувствуешь себя как со связанными руками. Но со временем приходит понимание что писать можно на чем угодно. Особенно воодушевляют примеры которые при "правильном" написании на C++ занимают десяток страниц, а тоже самое на C десяток строк. Просто топорно не в общем виде, но работает как надо.


S>>а можно пример когда такая оазница в коде


M>Из бородатого юмора:


Какой-то наверно очень бородатый юмор, года из 90го .. 95го:
#include <iostream>
#include <string>
using namespace std;

string message[] = {"Hello ", "World"};
int i;

int main() {
    // your code goes here
    for(i = 0; i < 2; ++i)
        cout<<message[i];
    return 0;
}


Hello World

Маньяк Робокряк колесит по городу
Re[3]: Изучение Си после C++?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 24.07.19 21:45
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

M>>От ООП только структуры, вместо стандартных контейнеров — самописные, вместо стандартных функций — платформозависимые в основном, вместо C++-исключений структурные исключения, вместо new/delete — malloc/free


SVZ>Полиморфизм реализуется вручную при помощи указателей на функции.


Я так пробовал в начале нулевых, когда сишечку хотел в одном проекте нативно поддержать. Хорошо, хватило ума отказаться от это бесплодной затеи, и не тратить на это жизнь
Маньяк Робокряк колесит по городу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.