Форум программистов, компьютерный форум CyberForum.ru

Впечатления от знакомства с чистым Си - C++

Войти
Регистрация
Восстановить пароль
 
Ferrari F1
Форумчанин
441 / 337 / 75
Регистрация: 27.01.2015
Сообщений: 2,102
Записей в блоге: 1
Завершенные тесты: 1
23.07.2015, 00:45     Впечатления от знакомства с чистым Си #1
Всем здрасьте, порядка полугода назад так захотел изучать Си++, что прочел 1000+ страничную книгу Лафоре об ООП + Си++. Книга понравилась, но почувствовал, что мне необходимо окунуться в самые дебри языка.

Прочел книгу кернигана и ритчи по чистому Си, книга хорошая, но ощущения недосказанности все равно сохранилось.
Пошел еще дальше, нашел книгу по Си для отморозков, в которой о языке расписывается на атомном уровне (лексемы, досканальные правила объявлений, приведения типов, выравнивание структур в памяти, остроконечные и тупоконечные архитектуры и прочее).

Прочитав все это я ужаснулся, насколько мерзопакасным может быть этот язык Си: ТОННЫ макросов, тонны всяких переименнованных стандартных типов (size_t, time_t и прочих), целая свалка функций под названием Стандартная библиотека. аргументы переменной длины, прототипы функций с неопределенными арг-ами.
ДИЧАЙШИЕ объявления функций и(ли) указателей подобно этому
C
1
double (*(*f)(double(*)(double)))(double)
????КАК ЛЮДИ НЕ СОШЛИ С УМА ОТ ЭТОГО ЯЗЫКА АДА????
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
23.07.2015, 00:53     Впечатления от знакомства с чистым Си #2
А ты не читай то, что писали динозавры. Сейчас можно найти все что угодно: видео, презентации, сайты, даже игры(ну для java точно видел). Можно во всем разобраться доступно, вобщем. Собственно математику тоже можно почитать как в учебнике, математическим языком- и забросить этот бред, а можно посмотреть видео или почитать посты нормальных людей, а не роботов, и разобраться в теме. Короче дело не в языке, а в том Го*нопреподе который его писал, преподавал...и тд!
shmkv
543 / 257 / 30
Регистрация: 21.07.2015
Сообщений: 767
23.07.2015, 01:01     Впечатления от знакомства с чистым Си #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
????КАК ЛЮДИ НЕ СОШЛИ С УМА ОТ ЭТОГО ЯЗЫКА АДА????
А люди просто пишут на нем не задумываясь...

Добавлено через 2 минуты
На самом все эти "страшные штучки" очень даже нужны.
Ferrari F1
Форумчанин
441 / 337 / 75
Регистрация: 27.01.2015
Сообщений: 2,102
Записей в блоге: 1
Завершенные тесты: 1
23.07.2015, 01:05  [ТС]     Впечатления от знакомства с чистым Си #4
shmkv, разве нельзя писать ПО для микроконтроллеров посредством ООП?
shmkv
543 / 257 / 30
Регистрация: 21.07.2015
Сообщений: 767
23.07.2015, 01:09     Впечатления от знакомства с чистым Си #5
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
shmkv, разве нельзя писать ПО для микроконтроллеров посредством ООП?
Можно, но:
С ограничениями (без исключений и других некоторых вещей).
Не всегда в этом есть смысл.
И даже без исключений может возникнуть много всяких нехороших сюрпризов вроде невозможности инициализации списка глобальных конструкторов. В этом плане Си более предсказуемый и работоспособный под голым железом.
smartpointer
 Аватар для smartpointer
64 / 58 / 23
Регистрация: 17.02.2014
Сообщений: 252
23.07.2015, 01:16     Впечатления от знакомства с чистым Си #6
Дело все в том, что плюсы бесполезны без своей си совместимости - поскольку останутся только шаблоны и классы, многие штуки мне лично очень нравятся например #define
nmcf
4441 / 3779 / 1278
Регистрация: 14.04.2014
Сообщений: 14,872
23.07.2015, 18:56     Впечатления от знакомства с чистым Си #7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
разве нельзя писать ПО для микроконтроллеров посредством ООП
Просто они слабоваты в плане ресурсов, там до сих пор Ассемблер применяется.
Rius
 Аватар для Rius
1797 / 1182 / 279
Регистрация: 25.05.2015
Сообщений: 4,145
Записей в блоге: 4
Завершенные тесты: 4
23.07.2015, 19:28     Впечатления от знакомства с чистым Си #8
Цитата Сообщение от nmcf Посмотреть сообщение
сто они слабоваты в плане ресурсов, там до сих пор Ассемблер применяется.
Нет, C/C++ уже широко распространён.

Цитата Сообщение от shmkv Посмотреть сообщение
????КАК ЛЮДИ НЕ СОШЛИ С УМА ОТ ЭТОГО ЯЗЫКА АДА????
Люди не обязаны применить все эти особенности в полном наборе, постоянно, в одном проекте, и даже вообще не обязаны применять когда-либо.
Excalibur921
445 / 254 / 38
Регистрация: 12.10.2013
Сообщений: 1,945
23.07.2015, 20:09     Впечатления от знакомства с чистым Си #9
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
????КАК ЛЮДИ НЕ СОШЛИ С УМА ОТ ЭТОГО ЯЗЫКА АДА????
А вы не читайте все подряд…это пустая трата времени. Да и чтение книги подряд без практики пустая трата времени. Нужно читать то что сейчас интересует и побольше практики. Если вы не используете знания они стираются.

Ну вот вы прочитали кучу книг.. и что вы теперь лютый гуру С?

На любой вопрос в форуме ответ знаете? Или вы ничего не умеете а только гордитесь количество прочитанных страниц и скорей всего больше половину из них не помните и\ или забудете через месяц? И в чем смысл?

Добавлено через 5 минут
Цитата Сообщение от nmcf Посмотреть сообщение
разве нельзя писать ПО для микроконтроллеров посредством ООП
Кстати помню когда мучал ассемблер для микроконтроллеров была найдена прога которая из блок схем логики принятой в информатике строила код на ассемблере...получилась наглядность логической схемы и скорость ассемблера. Может уже и есть такое не знаю =).А то все то С то ASM и мыкайся . А тут оп два в одном…
Ferrari F1
Форумчанин
441 / 337 / 75
Регистрация: 27.01.2015
Сообщений: 2,102
Записей в блоге: 1
Завершенные тесты: 1
23.07.2015, 20:33  [ТС]     Впечатления от знакомства с чистым Си #10
Excalibur921, помню все, о чем читал. Стараюсь читать книги очень вдумчиво
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
23.07.2015, 20:47     Впечатления от знакомства с чистым Си #11
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
помню все, о чем читал.
Главное не только помнить, но и понимать.
Ferrari F1
Форумчанин
441 / 337 / 75
Регистрация: 27.01.2015
Сообщений: 2,102
Записей в блоге: 1
Завершенные тесты: 1
23.07.2015, 21:04  [ТС]     Впечатления от знакомства с чистым Си #12
castaway, не считаю нужным доказывать здесь свое понимание. Например в последней книге для меня было новостью узнать про классы перегрузки имен (имена (переменных, ф-ций, имена typedef), метки goto, имена макросов, теги структур и идентификаторы полей). И вобщем много всего нового узнал, чего в обычных учебниках по Си++ не сыщешь, хоть он почти что и считается надмножеством Си
Rius
 Аватар для Rius
1797 / 1182 / 279
Регистрация: 25.05.2015
Сообщений: 4,145
Записей в блоге: 4
Завершенные тесты: 4
23.07.2015, 21:11     Впечатления от знакомства с чистым Си #13
Ferrari F1, и не надо доказывать. Тем, кто видел студенческие работы, и так очевидно, что ни опыта, ни понимания у них ещё нет.
Ferrari F1
Форумчанин
441 / 337 / 75
Регистрация: 27.01.2015
Сообщений: 2,102
Записей в блоге: 1
Завершенные тесты: 1
23.07.2015, 21:17  [ТС]     Впечатления от знакомства с чистым Си #14
Rius, ну естественно у меня нет опыта в практическом применении си(++), ведь я ни разу не программировал микросхемы, или что там делают здешние форумчане, у кого репутация за тыщу и 5 - 10 летний опыт?

Для меня достаточным пока является просто осознавать свое уверенное понимание листингов. А то, как им в деле орудовать - это дело десятое
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
23.07.2015, 21:18     Впечатления от знакомства с чистым Си #15
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
классы перегрузки имен
Именно это я и имел в виду.
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
не считаю нужным доказывать здесь свое понимание
Согласен. Это ни к чему.
Aash
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 4
23.07.2015, 21:18     Впечатления от знакомства с чистым Си #16
))
на первом курсе было заданием создать 2-х мерный динамический массив))
Все это делали на маках, там где дискету надо в корзину выкинуть чтоб достать)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2015, 13:14     Впечатления от знакомства с чистым Си
Еще ссылки по теме:

C++ Qt Первый опыт знакомства с Qt
Преимущества EntityFramework над чистым ADO.NET C#
Выбор между чистым PHP, фреймворком и CMS PHP
C++ Впечатления от прочтения стандарта
Asus K52JV собрать bios с чистым ME регионом

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

Или воспользуйтесь поиском по форуму:
hoggy
5611 / 2241 / 411
Регистрация: 15.11.2014
Сообщений: 5,038
Завершенные тесты: 1
24.07.2015, 13:14     Впечатления от знакомства с чистым Си #17
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
double (*(*f)(double(*)(double)))(double)
????КАК ЛЮДИ НЕ СОШЛИ С УМА ОТ ЭТОГО ЯЗЫКА АДА????
тут все прекрасно читается на самом деле.
вероятно вы ещё не видели код, настоящий адь и содому.

http://rextester.com/OXPKL5710


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
 
 
double foo(double v) { return v; }
 
typedef double (*pFunc)(double v);
 
pFunc baz( double f(double v)  )
{ 
    return f;
}
 
 
 
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    
    // объявление переменной pointer2function,
    // которая является указателем на функцию, 
    // которая принимает указатель на функцию
    // вида: double f(double v)
    // и возвращает в качестве результата указатель на функцию с такой же сигнатурой
    
    
    double (* (*pointer2function)(double(*)(double))) (double)  = baz;
        
    std::cout << "result = " << pointer2function(foo)(20.5) 
        << std::endl;
    
    
    // такие вещи нужно знать, если хотите состояться с/с++ программистом\
    // хотя бы потому, что спрашивают на собеседованиях
    // существуют простые алгоритмы разбора типа
    // [url]http://habrahabr.ru/post/116255/[/url]
   
    
    // альтернативный вариант:
    
    // объявляем тип указателя на функцию
    // который возвращает указатель на функцию, и принимает указатель на функцию
    typedef pFunc( *pointer2function_t)( pFunc);
    
    
    pointer2function_t example = baz;
    
    std::cout << "result = " << example(foo)(20.5) 
        << std::endl;
    
    
    // очевидно, что альтернативная запись намного проще читается
    // и именно так поступают и сишники, и плюснутые.
    // никто в здравом уме не пишет многоэтажные типы.
    
}
Yandex
Объявления
24.07.2015, 13:14     Впечатления от знакомства с чистым Си
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru