Не умея программировать, я ощущаю себя неполноценным человеком. Это всё равно что не знать английского языка в современном мире. Вообще, я закончил политех, факультет тех. кибернетики, поэтому программировать обязан был по определению. Но не пошло. Как я программировал в универе?
1. был у нас предмет ТПП. Теория технология программирования. Вёл его замдекана Евдокимов Виктор Евгеньевич. Так вёл, как будто всё уже давно умеют программировать и иногда шутил. Но проблема была в том, что все кто сидел на лекции на первом курсе, действительно похоже умели программировать, а я один сидел и ни черта не мог понять.
Я даж тогда карикатуру нарисовал про лекции по ТПП:
2. был у нас предмет компьютерная графика. Вёл Сальников Вячеслав Юрьевич. Там были жесткие лабы и это был единственный раз, когда я реально был вынужден чего-то программировать на C++. Сальников был норм препод, я ничерта не понимал, как всегда, но можно было растопить лёд кое-как.
3. был у нас предмет по микропроцессоррам. Лобан Валерий Иванович. Я едва успевал чото делать. Помню свой шок, когда для какой-то лабы он сказал невзначай — ну а тут вам надо налабать драйвер на ассемблере, чтобы подключить микропроц к компу. Тут я ваще в осадок выпал. Как я это в состоянии сделать? Меня этому никто не учил! Нет же никаких книг и инструкций на эту тему!!! Где узнать как это сделать? Купил даже какую-то толстую книгу по ассемблеру, прочел страниц 30, и забросил....
хз как я проскальзнул через все эти предметы, но кое-как сдал. Последняя подстава была на дипломе, на котором требовалось не только аналоговую часть сделать, но и программный интерфейс для прибора закодить, чего я ваще не умел. Но слава богу не спросили...

Сейчас я понимаю в чём была моя проблема — в том, что сложные предметы сыпались на снег на голову, и не было
времени, чтобы сделать акцент, например, на программировании. Одаренные ребята, увлеченные с детства программированием, просто продолжали развивать свои навыки, а я так и не смог «поджечь нефть». Всё что требовалось, — это просто увлекаться программированием и последовательно отдавать ему время. А я тогда наивно полагал, что хочу заниматься
биржей и
экономикой и думал что именно знания по экономике и рынкам принесут мне несметные богатства)) Соответственно отдавал время им.
(еще один мой рисунок, в паинте)
3 года назад я попытался изучить C#.
Вот чем это закончилось. Хватило меня недели на две. В какой-то момент просто понял, что мою бошку рвёт от непонимания даже в самом начальном уровне, а что уж там дальше будет… Решил не развивать и бросил. Но всё это время продолжал чувствовать себя неполноценным человеком.
Сейчас вот решил, а попробую ка я снова посмотреть чего как. Потратил 15 часов. Просмотрел обучающие видео по C# на ютубе. Пописал примеры программок параллельно с автором вебинаров… Далее, решил ковырнуть код программы-примера TestConnect для интерфейса smartCOM 3.0 компании ItInvest. И что я вижу?
Блин, это китайский язык. Иероглифы. Вроде казалось бы, всё строго по алгоритму, вот точка входа Main(), дальше обращаемся к форме. Вот форма. Вот кнопка Connect, вот обработчик этой кнопки. Бл… Ладно, разбираемся. Первая же строчка...
Writers.WriteLine(«Enegy», «log», "{0} Click: {1}", DateTime.Now, «Create»);
Минут 20 только ушло на то, чтобы понять, что есть log.cs где описан класс DAFWriter, в котором описан объект(?) Writers. Ну и всё это для ведения лога действий программы.
Окей, следующая строчка.
ReDrawStatus(«Create»);
Фак! Это ещё что за функция? Где она описана? Поискал в MSDN — нету, в кодах TestConnect — тоже не нашёл. Может в библиотеке smartCom описано? и там нет. И вот тут думаешь — Я дибил? Ну ладно, потом найду. Интутивно то понятно, что эта функция просто выводить строку текста в статус формы. И вот, только что, решив ещё разок на удачу поискать, нашел все таки в середине кода формы определение функции
private void ReDrawStatus(string reason)
{
....
}
Блин, но сколько времени я украл у семьи, пока пытался найти эту тварь в коде. Реально минут 30 на это потратил. И это были не самые приятные 30 минут моей жизни, как вы догадываетесь. Это всё равно что операционную систему на компьютер ставить и не понимать, почему она не работает. Особый вид извращенного удовольствия.
Но мы не сдаёмся, ведь так?
Итаааак, ТРЕТЬЯ строчка обработчика кнопки Connect.
Дальше идёт понятный любому школьнику синтаксис ЕСЛИ, казалось бы, можно перевести дух…
if (!IsReady) // если SmartCOM не создан
Если бы не маленькое но… Переменная IsReady. Что она значит? Идём вверх кода.
private bool IsReady { get { return (SmartServer != null); } } // Установлено ли соединение
А чёрт… Бинарная перменная. Так. Фак. «get» я забыл что значит этот оператор, а в вебинаре этого ещё не было.
ползём в
MSDN восполнять пробел. Что мы там видим?
Ключевое слово get определяет метод доступа в свойстве или индексаторе, который извлекает значение свойства или элемент индексатора. ну и дальше там почитайте тут кучу справки на эту тему...
Тут я почуствовал стук в внутренней стороны моей черепной коробки, как будто кто-то просит, чтобы его выпустили наружу.
Да, кстати, а что вообще за синтаксис такой
private bool IsReady {это еще что значит?}
Вот как дальше двигаться? Ну ладно, допустим счас непонятно, потом еще вебинары посмотрю, станет понятно потом. что там внутри этих скобок, ага, какая-то перменная SmartServer. Давай ка её найдем? Сверху находим такое определение:
private StServerClass SmartServer
Господи… Вы знаете что я попытался сделать следующим шагом? Открыл новый проект с нуля, включил туда либу смарткома и въе*енил туда такую же строчку. И знаете что получил?

***
А почему я решил поступить так замысловато? Да потому что я нигде не нашёл класс StServerClass. Очевидно что он описан в либе СмартКома, поэтому я решил, что раз так, сделаем прогу с нуля, включим либу и тоже попытаемся просто вот объявиьть этот класс.
Ну результат вы видели. Это пи***ц. Как дальше быть? Как это решать?
НО!
ГЛАВНОЕ НЕ СДАВАТЬСЯ!
Ползём в мануал айти Инвеста. Единственное упоминание слова StServerClass только тут:
И всё. Тупик.
Не, можем двинуться дальше по коду в обработчике кнопки Connect, но там дальше так:
try
{
SmartServer = new StServerClass(); // Создать и назначить обработчики событий
....
Блдь. Опять 25. что это таааакое?
А знаете что дальше происходит?
Голова начинает к этому моменту пухнуть так сильно, что у тебя просто нет сил дальше двигаться по коду, бесконечно пропуская непонятные моменты....))))
И какие тут перспективы?:) После пары часиков таких упражнений начинаешь тихо ненавидеть все эти коды и всех программистов кто их пишет.
но главное...
не отступать и не сдаваться.
теперь то я это точно знаю, — чего не знал тогда, учась в университете.
ты делаешь ту же ошибку, что и в институте
кодить с АПИ надо уже имея нормальный опытв языке, тк АПИ как правило глючные, не говоря уже, что сам шарп не без греха
а главное — зачем? если есть торговый алгоритм — пиши на скрипте потом уже узкие места выясняй не спеша и переписывай частями и без гуя