Не умея программировать, я ощущаю себя неполноценным человеком. Это всё равно что не знать английского языка в современном мире. Вообще, я закончил политех, факультет тех. кибернетики, поэтому программировать обязан был по определению. Но не пошло. Как я программировал в универе?
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. что это таааакое?
А знаете что дальше происходит?
Голова начинает к этому моменту пухнуть так сильно, что у тебя просто нет сил дальше двигаться по коду, бесконечно пропуская непонятные моменты....))))
И какие тут перспективы?:) После пары часиков таких упражнений начинаешь тихо ненавидеть все эти коды и всех программистов кто их пишет.
но главное...
не отступать и не сдаваться.
теперь то я это точно знаю, — чего не знал тогда, учась в университете.
ты делаешь ту же ошибку, что и в институте
кодить с АПИ надо уже имея нормальный опытв языке, тк АПИ как правило глючные, не говоря уже, что сам шарп не без греха
а главное — зачем? если есть торговый алгоритм — пиши на скрипте потом уже узкие места выясняй не спеша и переписывай частями и без гуя
я на всякий случай со всех сторон одновременно захожу
1 — Самозабанься за такое количество мата
2 — начни с «ЗДРАВСТВУЙ МИР»
3 - не надоело в мозгах копаться?
4 — не пробовал художником стать?
«я на всякий случай со всех сторон одновременно захожу»
— шедеврально!
Представил мысленно некий объем — и в него лезет со всех сторон много маленьких Тим...)))
Amibroker вам в руки. там все как на бейскике ))) нам в школе его преподавали.
начните с сайта www.amisite.ru
его автор Олег (на форуме 000) вам обязательно поможет.
ЗЫ: не надо никаких С++и С#, только время потеряете в «разборках» с кодом
В целом проблема неединообразности кода и «накопительных ошибок» — это очень большая проблема.
И если его нормальный чел писал, а не долбодятел, разобрать без проблем с ним
Das Tier,
причем тут Дания?
ну кстати это меня не касается, закончить ФТК не понимая ничего в специальности было почти невозможно
А осуждать я не осуждаю. Не люди такие, такая система построена и функционирует.
ЗЫ Стратегия хоть есть, которую кодить собрался?
ЗЫЗЫ Приходи учить Lua, через 20 часов гарантирую будешь в КВИКЕ роботов писать.
безотносительно стратегий хочу инструментарий освоить
если будешь 8 часов в день этим заниматься то через 3 месяца будешь довольно бело ориентироваться. А ещё изучи программу в которой программируешь контрол-клик — и увидишь то место где объявлена функция или переменная.
пы сы программирую 19 лет
Тимофей! Я тебе открою секрет — программисты это «жрецы современности», они просто еще не осознали этого, скоро они будут править миром :) который четко выстраивается под их «образ мышления и способности» ;) так что ты правильно нащупал потребность… умение мыслить — это власть! Так было и будет. Приезжай в Новомосковск пока я здесь… натаскаю тебя основами ) у меня тут пачка книг от «светил» ))… покажу тебе сакральный образ мышление прожженного программиста-трейдера )
программист решает узкую локальную задачу — чинит двигатель, коробку и т.д.
AlexeyT, ))))) «разделяй и властвуй»… сразу видно жертву этого концепта от жидомасонов… покажи мне в ВУЗе специальностЬ «архитектор ПО»… умник! ) Архитектор — это просто род задач для программиста, просто ему контора говорит «парень у нас дохера бабла и мы хотим каждый шаг проекта распределить между кучей людей… мы набираем программистов которые в прошлом уже корячились над узким спектром задач и даем им карточки с заданиями… вот этот будет архитектором, вот этот протоколы писать, вот этот базы данных, а этот будет сжатием данных заниматься, а вот этот будет интерфейсы набивать, а вот этот ко всем остальным частям системы как проводку в доме прикручивать»… но я тебе открою секрет — программиста изначально учат так чтобы он был ЧЕЛОВЕКОМ ОРКЕСТРОМ.и все что делит на рызных людей «конторки» мог делать ВСЕ САМ… от осознания потребности, до формулирования идеи, до создания архитектур, способов воплащения архитектуры разными интерфейсами, протоколоами и т.д. и даже банерок как прикрутить на сайт — подсказывают методологичеки где информацию об этом искать. А то что ты расписываешь — это «программист в идиократическом государстве»…
жертва «знаю все об ушке иголки, но ничего о ее кончике»… ))
но знать можно много чего, но ситуация такая,
что на 10 программистов, 1 архитектор,
и в это в том числе, зависит и от личных характеристик,
универсалы все равно не смогут, в моменте хорошо делать все,
даже если и знают теорию
нужны единицы, а остальные будут делать свои локальные задачи, и не нужна им это теория которые учили все эти годы, им для этого достаточно курсов на пару лет и практики (ну и личных способностей и желаний)
приходит на работу и думает, так я придумаю идею и начинает ее реализовывать?
А ха ха. Да смартлаб это просто срачилка жесть во что ресурс превратился
По большому счету, настоящий инженер должен не просто решать типовые задачи, а решать сложные задачи, не изучать алгоритмы и структуры данных, а создавать их, не использовать стандартные инструменты разработки, а разрабатвать свои, заточенные под задачу(eg DSL).
А с Вашими рассуждениями мы дойдем до того, что секретарши — будующие властительницы Вселенной, просто еще этого не осознали.
очень много разнообразной теории, а прикладных вещей мало
хобби)
Зачем?
Люди, кот. умеют программировать и зарабатывают этим на жизнь, как правило мечтают о моменте, когда можно будет не программировать, а стать ПМ/скрам мастером/ и т.д. и удалить вижл студию с компа.
Реально, скилл программирования просто оценен чуть выше, чем многие другие скиллы из за возможности его продать на запад. Короче, географический арбитраж, не более того. Но, Тимофей, зачем тебе в это лезть? Не понимаю. Найми людей, и пусть пишут код, в чем проблема?
К примеру, те фрагменты кода, что на странице, очень простые, и любой джун с рейтом в $700 в месяц (<$4 в час) расковыряет в момент. А о возможностях человека уровня Tech Lead/System Architect с рейтом в ~ $40 в час я вообще умолчу.
Подумай, если твоя деятельность дает тебе рейт в некие $х в час. То писать код на уровне недоджуна — это тупо терять $(x-4) в час. Каждый час просто терять бабло. Недозарабатывать на чем-то другом.
Реально, тебе сейчас начать учить C#, это примерно, как мне, скажем, снова пойти в 1-й класс школы с шестилетними ребятами. Может, что новое и узнаю, но прибыль от затраченного времени будет никакущая.
PS: пишу это, как человек, программирующий на C# с 2010 года.
В торговле лет конечно поменьше, но все тоже самое.
я бы посмотрел на Вас после первого дня работы с коллективом в 25 плохоуправляемых индивидуумов 8 лет отроду :)
о да, и на вас бы после целого дня общения с индивидуальностями в возрасте 70+, которых нужно не только выслушать не послав, но еще и вылечить.
Есть у мя знакомые программеры и учителя и врачи. Так вот программеры скорее сами токсичные. они социально недореализуются потому что сами очень замкнуты, а не наоборот.
и из любой общности есть исключения, это я тоже допускаю.
Живи с этим, и пусть ты и твои дети, если таковые есть (или будут) будут жить в стране где все именно так как ты сказал. А мне ты больше не интересен…
Обучение программированию — это структурная тренировка мозга. Такая работа над собой, помимо всего прочего, заставляет мозг заниматься правильной кодификацией (это реально важно!). Со временем даже появляются новое довольно сильное чувство… типа «красота кода» или его «дерьмовость» =). А потом вдруг понимаешь, что некоторые вещи из реальной жизни собираются в голове уже не так как раньше (хаотично), а сразу по секторам сознания. Выстраивается… ну что-то вроде «дворца памяти» =)…
Програмирую на всех языках
Неблагодарное это дело, как программист тебе говорю
Наркомания
Если не лежит душа — неча там делать, только здоровье гробить
Снял очки? Оденешь
Ты знаешь, что всякая переменная в большинстве языков программирования (если они строготипизированы) должна иметь тип данных?
То есть у переменной может не быть даже имени (в некоторых случаях), но тип данных должен быть.
Это понятно?
Тимофей Мартынов, ну вот. Что-то ведь знаешь =)
У всего есть фундаментальная причина. Думай как компилятор. Что ему надо знать, чтобы собрать программу? Тип данных необходим.
Простые типы — это:
во-первых, размер памяти выделяемый под них в файле и во время исполнения программы;
во-вторых, применимые к ним операции ассемблера.
Один и тот же набор битов означает разные сущности (разный смысл закодирован) в зависимости от типа данных.
То есть, в памяти хранится некий набор нулей и единиц, но в зависимости от того какая операция ассемблера будет выполнена (для целых без знака, со знаком, для вещественных чисел...) на выходе мы получим разный результат.
Поэтому компилятору надо знать тип данных.
Далее. Входных параметров у функции может быть много, а возврат всегда один (при этом результатом действия функции может быть много разных изменений, но возврат только один).
Когда объявляется функция у неё тоже обязательно объявляется тип данных, это и есть тип возврата.
В этом смысле переменная и функция подобны по синтаксису.
переменная так: тип_данных имя = значение
функция так: тип_данных имя(параметры)
Это должно быть кристально ясно, чтобы можно было переходить к абстракциям ООП. На самом деле ты должен сразу в голове выделять как компилятор все составляющие «предложения». В рамках камента не влезает, надо развивать дальше тот же путь (понять весь синтаксис предложения любого С-подобного языка программирования). По сути каждая команда ассемблера — функция. То есть всё сверху до самого процессора подобно одно другому (и внутри процессора), но дробится на более мелкие субстанции. Так что если понимаешь один уровень, поймёшь и другой.
Затем переходим к ООП.
функция = метод.
Класс — это сложный тип «данных», который на самом деле физически отличает от простого типа данных только то, что класс допускает совокупность не просто данных (переменных, грубо говоря), но и включает в себя исполняемый код, то есть методы закреплённые за этими данными.
Такая концепция позволяет создавать более сложные программы с меньшим гемором.
Объект – это конкретное воплощение класса (экземпляр).
Ещё раз:
тип_данных имя
Если тип_данных – это класс, а не простой тип, тогда «имя» — это объект (экземпляр класса).
Ясно?
Теперь следующий важный момент.
Существует две совершенно разные вещи, которые постоянно путаются в голове, если люди не понимают синтаксис предложения Си-подобного языка (именно Си, а не C++!).
Объявление — оно необходимо для компилятора, чтобы тот знал с каким типом данных связать конкретную переменную или функцию.
Определение — это значение. То есть байты которыми будет заполнена функция или переменная.
Для функции определение — это её тело (код функции).
Для переменной определение — это присвоение значения. В простейшем случае v=1 — это присвоение ячейке памяти, которую мы условно именуем v, состояния = 1.
При этом где-то раньше компилятору должно быть __объявлено__, что ячейка эта размером, скажем, 4 байта или 8 байт и только тогда он точно будет знать, что надо сформировать команду ассемблера, которая обнулит все эти 4 или 8 байта и лишь в младший бит поставит 1. Поэтому без объявления не обойтись.
Но тут начинается укороченная форма записи, когда например пишут:
int v=1;
Здесь сразу в одной строке идёт и объявление и определение переменной.
Точно так же можно сделать с функцией(методом) объявить и сразу определить. Но полная форма записи всё равно выглядит так:
int v;
v=1;
Возвращаемся к ООП.
int — это самый простой базовый тип данных, но там же может быть и класс (если не понял ещё раз читай прошлый камент).
Допустим:
StServerClass SmartServer;
Что это значит?
Ага. Именно так:
тип_данных имя
То есть, «сложная переменная»(оно и есть _объект_) по имени SmartServer теперь будет типа StServerClass.
При этом определения ещё не было! Это только объявление!
А вот объявление с определением в одну строку было у тебя в документации, но в примере кода они разделены на две строки.
Определение идёт дальше:
SmartServer = new StServerClass();
То есть сложной переменной (объекту) SmartServer присваивается значение StServerClass(). Прямо как в случае с v=1, только здесь не единица, а целый класс вместе с методами и данными.
Оператор new как раз означает для компилятора, что на этом месте во время выполнения программы надо будет в памяти развернуть(в смысле создать) экземпляр класса StServerClass.
Оператор try означает защиту от обращения в неопределённые области памяти. Это низкоуровневые технические заморочки.
Если, допустим, внутри блока try{} происходит попытка чтения/записи в память, которая защищена или вообще эти адреса не доступны, тогда программа не будет аварийно закрываться из-за такой ошибки. Это как бы сознательная попытка «тыкнуть» в некоторую облать памяти (по указателю) и проверить, а оно нам доступно?
Для чего это надо.
Опять таки, если с объявлением/определением объекта было что-то не так, тогда указатель на него физически будет мёртвым, так как объект не создан. На этапе компиляции программы не всегда можно гарантировать правильное создание любого объекта, вот и приходится использовать try.
…
* в этом каменте понятие «определение» я использовал некорректно (подзабыл сам, спасибо professor facepalm вразумил) и по сути спутал «определение» с «инициализацией», так что перечитать камент придётся ещё разок другой =), но всё равно в нём есть польза.
Это не так. Правильно: это выделения памяти для хранения значения переменной.
«При этом определения ещё не было! Это только объявление!»
Это определение как раз и было. Иначе «SmartServer = null;» это означает, что переменная снова не определена, и есть только объявление?
«Оператор try означает защиту от обращения в неопределённые области памяти.»
В С# не предусмотрены возможности для обращения по произвольным участкам памяти. А в С++ try не спасёт тебя от падения программы при попытке доступа по невалидному адресу.
Но давайте без придирок.
Про try
Я опустил абстракцию «исключение» и сразу перешёл к низкоуровневой категории «адрес/указатель». Зачем? Да потому что по опыту знаю, что люди не понимают такие абстракции. А вот адрес в памяти и запрет (один из видов исключений) вполне понятен. Если Вы скомпилируете код ЯВУ, затем в ассемблерном отладчике посмотрите на выполнение блока try-catch, то как раз и увидите работу с эксепшинами через ловлю нулевых или неверных указателей. Так что по сути я прав, а что там сверху в ЯВУ доступно или не доступно — это уже мелочи.
Про определение
Надо смотреть работу компилятора и исполнение кода, но честно — лень. =) Фиг знает, может быть я ступил и определяется класс сразу так. Выходит статично (без new). Вполне… Сейчас плохо соображаю, но тогда выходит, что экземпляр класса появляется в этот момент и вообще непонятно нафига new.
Про выделение памяти
Нет.
Зависит от оптимизации компилятора
Память в файле выделяется вообще-то на этапе объявления переменной, если компилятор делает всё топорно. То есть объявим мы массив на 1000 int'ов, на далее не будем его использовать в коде. Если компилятор топорный, то в файле появится 1000 интов под этот массив и соотвественно в память тупо замамится при выполнении, а если компилятор «умный», то он вырезает не использованные переменные. Так что объявление = выделение по теории, но на практике бывает и так и эдак.
Тут, конечно, надо понимать, что в случае С++ компиляция происходит в машинный код, а в случае С# — в байт-код, который затем исполняет виртуальная машина. Поэтому не понятно, про какой ассемблерный отладчик идёт речь. Да и обработка исключений здесь вроде бы происходит совсем по-разному.
«но тогда выходит, что экземпляр класса появляется в этот момент»
Нет, конечно. Создаётся просто переменная, являющаяся указателем.
«вообще непонятно нафига new.»
А здесь уже создаётся сам объект.
«Память в файле выделяется вообще-то на этапе объявления переменной»
При объявлении переменной мы лишь указываем, что такая переменная дальше будет использоваться. А выделение памяти происходит при определении (которое, является частным случаем объявления). Возможно, вы путаете объявление с определением, а определение — с инициализацией.
Как раз хотел сказать так: самый топорный С-подобный компилятор, когда встретит строку:
int v;
Что сделает?
Забьёт в секцию данных четыре байта (для 32-битной платформы) под переменную. Будет она использована или не будет, а в файле эти байты уже зарезервированы. К этой переменной можно относиться только как (и вот тут я спутал!!!) к неопределённой (надо не инициализированной). Далее после:
v=1;
Переменная инициализирована (а я влепил «определена»).
Да, виртуалка гатит разбор исполнения в асмовом отладчике до жути, так что если глаз не намётан, то не просто понять как интерпретируется байт-код в конечный набор «полезных рафинированных» действий. А декомпиляция автоматом тут не поможет, тут как раз надо изучать сам декомпилятор =) Потому и лень там копаться.
Признаю свои ошибки. Надеюсь Тимофей поймёт суть.
Сразу скажу, такое могут дать только по большой дружбе, т. к. в этой среде не принято делиться исходниками, но это гораздо проще будет для тебя.
Еще вариант: договорись с программистом, что он будет для тебя писать программу в твоем присутствии за деньги, возможно, научишься.
если будешь 8 часов в день этим заниматься то через 3 месяца будешь довольно бело ориентироваться. А ещё изучи программу в которой программируешь контрол-клик — и увидишь то место где объявлена функция или переменная.
пы сы программирую 19 лет
:-))
хорошо, если программировал раньше, но сейчас занимаешься чем-то другим.
думаю, что свои навыки программирования на C# верну за месяц активного штудирования материала и выполнения задач с усложнением. На что-то более древнее, вроде LiSPa уйдет с месяца два-три.
«Одаренные ребята, увлеченные с детства программированием, просто продолжали развивать свои навыки, а я так и не смог «поджечь нефть».» Нельзя обьять необьятное, если хочешь добиться успеха, надо концентрироваться на конкретном направлении. И даже это не гарантирует успех в жизни.
У нас неодаренные ребята учили английский на всех парах и имели кучу хвостов в том числе по программированию с риском отчисления. Благо корочка и факультет с его конкурсом производили впечатление на работодателей а беглый английский и опыт работы с банковскими системами открывали двери для стажировок. Потом курсе на 4 уходили во всякие Citigroup. А одаренные сейчас в байкерах и мобилизованы на утилизацию зеленых человечков на Донбасе или оказывают консалтинговые услуги, перебиваясь заказами раз в два месяца. Так что не всегда даже одаренность и успешность в студенческие годы — гарантия безбедного будущего.
Допустим, я приходил на семинар и задавал работу- описать метод монте- карло на Си +… Я знал алгоритм, мне был известен ответ и меня не волновали операторы… Я с умным видом смотрел на скобки, описания объектов… Потом надувая губы говорил, что у петрова эта реализация выполнена красивее… Не хотите ли оптимизировать код?
И если приходили с просьбой помочь при написание алгоритма на языке… То я брался засучив рукава… Потом минут через пять придирался к какой нибудь переменной… И глядишь- студента осеняло самого… И так я провел 16 семинаров… в семестре.
В универе сделали группу иностранцев… с целью преподавания на англ языке...
Никто из преподов не пошел, а я пошел. В рез-те иносранцы оказались все армяне и грузины… которые и так меня понимали по информатике)))
А вот всякое lua это реально шняга, причем чужая, зачем себя ставить в зависимость от чужих проектов.
Тимофей, ты грамотный парень и сто процентов понимаешь вышеизложенные истины, и мне кажется что суть не в том, чтобы просто научиться кодить, а в том, что в твоей голове родился торговый алгоритм, который ты ни кому не хочешь сливать ;-)
и если я прав то это отличный мотиватор для освоения программировани, а если для самоутверждения, то это пустая трата времени т.к. представь сколько ты украдёшь у себя драгоценного времени.
Я стараюсь сделать так, что бы у меня было больше времени для семьи.
Мы в среднем живем 70 лет на этой планете, это мгновение в вечности, так что с временем нужно быть очень рассудительным и не использовать его в пустую...
Если в чем не прав поправьте
Что-то меня понесло)
Я помог двоим чувакам стать программерами, которые сейчас зарабатывают этим на жизнь, если надо, обращайся в личку.
тебе нужно сделать в визуал студии «go to declaration». под шарп умеет решарпер. очень советую! https://www.jetbrains.com/resharper/features/navigation_search.html
писать на шарпе без установленного решарпера то ещё извращение. голая визуалка ничего не умеет же.
система в основном была правильная
Тимофей,
«C# in a Nutshell» — первые 7 глав обязательны к прочтению несколько раз, чтобы составить ментальную модель языка и платформы .NET. Остальные главы также незаменимы как reference когда нужно что-то сделать конкретное. Без ментальной модели и большой картины что происходит, тыкаться в чужой API бесполезно и бессистемно.
И главное не слушай тех, кто рекомендует динамические интерпретируемые языки для начала (Python, Lua), у них иллюзия простоты. Без типов долго будет медленный говнокод со скрытыми багами — «был там и делал это». У меня произошел квантовый рывок, когда я начал использовать C и понял как все работает на уровне железа. C# — идеальный компромис для начала, IDE & Tooling — best in class.
Ты конечно круто начал с COMInterop и прочей ООП хрени. Даже Plaza2 от биржи проще технически и работает «сразу из коробки». API от InteractiveBrokers вообще простая и идеальаня для начала. Мой коннектор к Квику многим нравится с точки зрения простоты технической реализации.
>>Без типов долго будет медленный говнокод
cython.org/
как именно это сделать — пушистый веер способов.
те еще раз — чел бегает по кругу без цели, согревая космос.
на этом пока и остановились.
Если алгоритм, который O(n log n), написать так, что будет отрабатывать за O(n^3), то железо не сильно поможет. Недостаточную производительность интерпретатора можно компенсировать железом, но дубово написанные алгоритмы могут стать костью в горле.
Боксером однако так никто не пытается, стать, потому что пиздюли, ебуки и переломы — это реальная боль. А программирование нет. От подобных же заходов на ура на программирование гипс не накладывают, только приступы неврастении или легкий психоз...
Тимофей, я же рассказал тебе про правильный подход к началу самостоятельного обучения. Наливаешь чашечку кофе, берешь пару пирожных с кремом и читаешь примерно часик книжку Роберта Мартина. Потом делаешь перерывчик минут на 15, а потом пытаешься попрограммировать по мотивам прочитанного опять же примерно часик. Практиковать это надо каждый день и тогда через некоторое время у тебя начнет получаться.
Ну и если уж вы такие любители целеполагания, то надо учиться ставить себе реалистичные цели. Потому что нереалистичные цели жестко (как фейсом об тейбл) демотивируют. Почитайте на досуге психологов спортивных что-ли?
Насчет занятий с преподавателем тоже могу сказать что чудес не бывает. И вы за десять (двадцать, пятьдесят) занятий тоже скорее всего не станете программистом. Вам просто будет чуть легче, если попадется реальный преподаватель, который не только понимает разницу между программированием и преподаванием программирования, но и еще имеет реальный успешный опыт обучения кого-либо.
Если бы ты Тимофей жил в Тюмени, мы могли бы скажем пару раз в неделю встречаться и изучать практики (именно практики) программирования. У меня уже был такой опыт и такие ученики, не сказать что совсем безуспешный, и как раз в нужной предметной области. Но увы, география и транспортная схема нашей великой и необъятной делает наши встречи невозможными.
На каникулах делал простейшую вещь на луа — львиная доля времени ушла на то, чтобы просто собрать и подключить чужую библиотеку. Те же самые эмоции! Потом все гладко пошло.
то идеальный выбор именно скриптовые языки — python, R, да хоть VBA.
А вот если не будет хватать скорости или возможностей именно для торговли, то уже можно и изучать C# и все это самое.
Сразу лезть в эти ООП концепции для простого хобби нерационально.
Ошибка «Interop type StServerClass cannot be embedded» насколько я помню, очень легко исправляется. Находишь библиотеку SmartCom в референсах проекта. Щелкаешь по ней правой кнопкой мыши и выбираешь пункт Свойства (Properties). В свойствах находишь пункт Embed Interop Types и устанавливаешь его значение в False.
но запомнил концепции, вроде конечных автоматов и теории компиляторов (по сути — парсеров и преобразователей), это потом помогло в работе.
к окончанию института заинтересовался Дельфи и смог продвинуться самостоятельно (Windows тогда была новой и делфи была удивительным прорывом в оконном программировании).
На дельфи и лабал на первой работе.
А уже на второй за 5 лет выучил C++, C#, Java, VB, JavaScript и всякие там ASP, Struts и прочие промышленные веб технологии того времени. Даже для PalmOS чего-то коротенько писать довелось.
Запомнилась книга «Эффективный C++» — вот это очень ставит голову на место. Ну и люди были замечательные. От одного Гуру я в компании многому научился. Спасибо ему. Такой скромный был парень со светлой головой. Ещё в начале 2000ых использовал boost. До сих пор там в компании и работает.
После этого уже ушел на Java. в другую компанию. На C++ пишу иногда по старой памяти.
Программирование — это и хобби и работа. Очень нравится до сих пор, потому что был осознанный выбор профессии.
P.S.: Благодарить не нужно, лучше поставьте плюс в профиль. :)
зы Заводы стоят, б***ь, одни гитаристы в стране, б***ь.© No Future. Ленинград
Спасибо огромное, что не учился на хирурга.
Ещё во время школы (в старшем классе) учился в тех же стенах (в Политехе и в главном корпусе и в красном во дворе и там где тарелки, в лабораториях на переулке). Преподы были если не те же самые, то прям точно как клоны твоих =).
Главные слова на лекциях «так… ну это вы знаете, здесь в общем-то очевидно...», а потом на пол лекции начинался тупейший понт на тему «кто круче: студенты или препод?». А если человек пришёл учиться реально (не знает, но пришёл узнать), то ему там делать особо нечего. Отходил я один семестр и понял, что поступать в Политех точно не буду! Поступил в СПбГУ на журфак =).
А! Забыл главное… Я ведь не просто на базовые лекции ходил, я ходил на доп.отделение. Факультет переподготовки инженеров на системных программистов! Во как! То есть туда брали людей с высшим техническим образованием и якобы учили их там только программированию!
Мы с другом пошли и нам сказали — если вы закончите программу факультета, то для получения нашего диплома о втором высшем образовании надо будет сначала закончить первое высшее =))) Но мы оба поняли буквально за семестр, что нифига там не учат людей программированию. Туда приходили технари старой школы, которые уже были программисты-самоучки. Приходили за дипломом для работы. Единственное образование можно было получить в процессе общения с ними. Только я был школьником, а они угрюмые взрослыми дядьками (почти ауты), так что не сложилось особо наше общение.
чтобы программировать — надо сосредоточиться, подумать. по сути — замкнуться внутри.
а для социализации надо максимально разомкнуться наружу.
работают разные отделы мозга.
поэтому программисты такие немного угрюмые люди. так же как ботаники — просто издержки концентрации.
я на прошлой работе был прогером, надоело умирать перед компом. перешел на другую, стал сервисником, выезжаю по заказчикам, общаюсь постоянно. через 10 лет тоже надоело. опять на программирование потянуло. люди какие-то скучные (шутка)
а так — отличный вирусный текст, умеешь, разнесут программисты по всему фейсбуку.
хм…
Но сейчас жуткий комплекс, что не умею делать операции.
Мой профессор по архитектуре процессора с пеной у рта доказывал, что нам всем до самой старости хватит i80386 архитектуры 32-битного режима, потому что, дескать, закон Мура — это фуфел и скора прогресс остановится и памяти в компах на 32-битную адресацию хватит ещё лет на 100.
Мне было уже тогда совершенно очевидно, что человек просто цепляется за свои устаревшие знания и от страха боится раскрыть глаза и признать действительность.
Учить ведь можно хорошо! Тогда и отторжения такого в массе у людей не будет. А так получается, что? Учёба сама по себе, вуз-диплом сам по себе...
Вот о чём топик. =)
К сожалению, у Тимофея не было интереса изучать программирование (или к счастью).
а не исключительно 5 разных языков от системных до веб,
и все завязанное на одну математику.
инженеру (любому) необходимо много предметов растянутых на пару-тройку лет
а вот 99% программистов такой необходимости нет
вернее сейчас ее стали называть инженерной, но инженерной она от этого не становится, это не каноничная инженерия, а так, веяние моды.
если не знал
Примерно так же, как считать что станешь хирургом. Или скрипачем в оркестре
На самом деле тут просто маятник. Если раньше программистов считали гениями, то сейчас как компенсацию считают на уровне ПТУ. На самом деле обычная инженерная специальность, как и все другие. Единственно что технологии меняются каждые 5-10 лет
Ru-Ticker.com, смотря какая цель. Реально знаю ребят, которые пришли во фронтенд, пройдя какие-то говнокурсы. Клепают формочки, подбирают код, что бы в разных браузерах кнопки не съезжали, короче, сами признаются, что работа говно, и неинтересно. Но… зарплатой довольны)
А еще… тестировщики неплохо бабос рубят. Не то, что много, но неплохо в пересчете на затраченные усилия на становление тестировщиком.
Я к чему это говорю, что по факту дискретка и умение вертеть красно-черное дерево далеко не необходимые скиллы. Человек, знающий английский, и разобравшийся в ангуларе, реакте, бекбоне и т.д. и научившийся быдлокодить, как правило, работу находит быстрее.
А с 1996 по 2003 менял каждые полтора года комп вынждено, потому что мощность удваивалась
Сейчас же сижу за компом 6 летней давности и даже не думаю про апгрейд
Тимофей, у Вас талант — передача атмосферы, перспектива, «штрих» и даже выражение лиц. Этой работе место на выставке современного искусства. (-:
В любом деле нужно начинать с основ, а не наоборот.
А так… типичный рабочий день когда приходится в чужом одноразовом проекте разбираться.
И еще, среды разработки конечно разные, но Ctrl+ЛКМ должно было сразу перевести на объявление функции. Ctrl+SPACE — что ей вообще передавать. Что-то такое обязательно есть
Запустили огромную жрущую ресурсы среду вместо блокнота, так пользуйтесь возможностями. А так это все равно что на КАМАЗе письма возить.
Но теперь уже нет необходимости посвящать этому жизнь и карьеру. Уже в ближайшие годы и программировать, и заниматься переводом будут системы с искусственным интеллектом. Впрочем, экономики, как профессии, тоже не будет. И по мнению Гардиан все произойдет намного быстрее, чем могло показаться и даже планировалось,- в течение ближайших десяти лет.
У вас получится что программист что-бы написать программу пишет программу, которая напишет программу. И так с каждой задачей. Не изобретайте велосипед.
На первом этапе переключатели щёлкали, потом числа с телетайпа забивали, позже появился мнемонический команды, потом языки высокого уровня.
Далее появились кросс-платформенные решения (виртуальные машины со своим байт-кодом).
Следующий этап — визуальное программирование. Вначале всякие блоксхемы кубками, набрасывание контролов на формы в билдере. Сейчас активно разрабатывается реальная глубокая визуализация (когда создаваемый алгоритм тут же интерактивно показывает весь результат и даже с проекциями разных входных значений и изменений).
Будет и голосовое программирование наверняка. Говоришь, например — «фон чёрный, добавить плеер, добавить обработчик, в нём 1-е условие: плеер активен с 10:00 до 22:30 по времени сервера...»
Это не значит, что не нужно будет кому-то развивать нижние уровни, но ведь можно тогда будет и на разговорном уровне решать прикладные задачи.
Ru-Ticker.com, да тоже всякие флеппи бердсы появляются время от времени. Или 2048 — это верх человеческой мысли? Или энгри бердс? Что, так сложно это написать?
Просто концепция рубли бабла программированием переместилась от вопроса «как писать» к вопросам «кому впарить» и «как впарить».
"Вначале всякие блоксхемы кубками, набрасывание контролов на формы в билдере." не пошло. К примеру, тот же ASP.NET Web Forms. Вроде и хорошая идея без знания js и колупания в html создавать веб приложения, но не пошло. Да и WinForms/WPF уже отмирают.
Тем более сейчас любая написанная программа должна приносить доход.
Советую посмотреть курс «learn how to learn» на корсере www.coursera.org/learn/learning-how-to-learn/home/welcome
После просмотра станет понятно, что пытаться запихнуть большой объем информации в мозг за короткое время — это тупиковый путь. Маленькие, регулярные шаги приведут к цели значительно быстрее. И еще, удовольствие (положительные эмоции) от обучения приводит к лучшему усвоению и повышению мотивации. Отрицательные соответственно наоборот. Чтобы получать удовольствие от разбора чужого кода, нужно иметь достаточный левел.
На ниндзя я сделал за 5 минут, даже прибыльным был на истории.
Плять в TSlab мало того что никто не помогает. Или скажут «пропиши adict в резерве, и подключи сторонний драйвер маршрутизации, дабы все переменные нашли свои пути»,
сидел 2 недели, рылся в этих блоках, пытался залезть в библу C SHARP или как то так.
Я сдался, бошка не выдержала. За деньги проще)
Если я в TSlab запутался, то явно прогерство не мое.
Да и отчисляли меня из колледжа из за математики)))
Ну идеи для TSlab рождаются постоянно, ну это уже как трейдерская тема)
2. отличная оценка качеству и значимости современного высшего образования (получить диплом ничего не понимая)
3. забавные картинки (хотя если б их не рисовал, может научился бы кодить?)
4. нахрена лезть в С++?? Возьми что-нибудь подружелюбнее (Delphi, ...)
5. нахрена вообще лезть в кодеры ЕХЕ???? (для алгоТС подойдут встроенные языки терминалов, которые несравнимо проще С)
6. снова + за картинки ))
А по С# купи или скачай книжку, полно хороших книг для начинающих где все разжёвано. На уроках из youtuba ничему хорошему не научишься.
а тебе близко:
1. сайт
2. трейдинг.
===========
1 — у тебья есть программер на php варганит сайт… сядь и сиди рядо с ним. Это гораздо решче чем Шарп!!!.. Плохо если он у тебя на удаленке работает...
Почерь если ты будешь не чесать что-то что болтается, то код работу кода ты узнаешь хорошо и к тебе придут дельные мысли что задать сделать программеру, а может и самому сделать… Например ЧПУ ссылки)))
2. робьотостроение...
Lua -на этот язык обрати свой взор… ОН для квика… а квик для биржи… ну ты понял)))
поверь… иногда лучше разбираться чем завязнуть)))
а вообще надо брать простые примеры и ковырять и все у Вас получиться!
напишите что то интересное, простой планировщик например,
только практика сделает Вас программистом, нужен интересный проект и год практики и все, удачи!
пишу для смарткома на шарпе
классы использую только зашитые в библиотеке
зачем плодить лишние сущности?
любую систему можно реализовать с простейшими конструкциями
спокойно можно обойтись без сложностей
да смартком немного (!) сложнее апи квика или купайла
но на порядок(!) проще S# или плазы
www.ozon.ru/context/detail/id/2814155/
автор излагает очень доходчиво.
Можно предположить, что про C# у него книга не хуже:
www.ozon.ru/context/detail/id/30491580/
среди программистов тоже 1 хороший программер из тысячи..
или к примеру не все могут вести прямой эфир на РБК ))
Смирись )) Развивай те компетенции к которым у тебя есть предрасположенность...
Ты же не пытаешься стать хирургом или летчиком и бог весть там кем еще… и не сокрушаешься по этому поводу...
Ты изначально выбрал просто не ту область для поступления… да и потом ты не работал по специальности… что тоже о многом говорит…
Лезть с нуля в ООП с вопросом «быстро освоить программирование» (причем не просто а применительно к рынку, с соответствующими библиотеками) это 100500 лол.
Для того чтоб начать средненько разбираться в любой из отраслей неважно, кодинг, вождение автомобиля, рынок, раскрутка сайтов — да вообще любой - необходимо посвятить этому года три.
Это на тему «быстро»
Не доверяете?
Было бы все, как в комментарии, реализовали бы свой FIX адаптер + FAST адаптер (или допилили бы какой-то опенсорсный), и вперед.
Зачем сразу лезть в какие-то хитромудрые программы, написанные фиг знает кем?) Начинать лучше с того, в чём реально разобраться. То есть либо это должен быть идеально документированный код с подробными комментариями, либо код, достаточно простой для самостоятельного разбора. Разобравшись в простом, можно переходить к более сложному.
Многие пугаются именно сложности. Вот именно этот эффект «голова пухнет» был почти у всех программистов. Разница между людьми только в том, что одни сразу решают, что программирование — это не для них, т.к. «слишком сложно», «у меня нет к этому способности» и т.п. А другие начинают разбираться, понимая, что некоторые вещи сейчас не под силу, но сейчас можно разобраться в чём-то попроще.
Я работаю программистом с 2006 года. И когда я сажусь за разбор кода какого-то более-менее сложного ПО, с которым никогда не работал, у меня точно так же пухнет голова. В первый день понимаешь общие основы, во второй понимаешь суть архитектуры, в третий уже можно решать какие-то простые задачи, через 2 недели можно считать себя опытным программистом по данному ПО, через несколько реализованных и сопровождённых проектов (важна обратная связь с конечным потребителем, чтобы понимать, что и где ты сделал не так) ты уже эксперт в этом программном продукте.
Золотые слова аплодирую стоя! Такая же проблема и у меня, получается, что ты с детства должен быть чем то увлечен и этот навык в себе развивать, а не идти учиться на программиста если любишь КС по ночам гонять. Да вот суть проблемы в том, что в детстве не очень понимаешь, чего хочешь и куда двигаться, а во взрослой жизни уже поздно, что либо меня!
«уже поздно» — это отмазка чтобы оправдать свое бездействие.
Никогда не поздно.
Тем более никогда не поздно научиться роботов писать по своим идеям.
Тимофей, ну это точно шанс)
http://www.themanufacturer.com/articles/fisher-price-to-teach-children-coding-with-the-aid-of-a-robot-caterpillar/
А во всех нормальных есть функция 'показать определение'. И перемещаетесь на нужное место не за 30 минут.
Надо прочесть книги или Шилдта, или Карли Ватсона.
В крайнем случае быстро посмотреть что почём тут www.firststeps.ru/
когда начинаешь разбирать задачу большую, лучше понимаешь, что именно тебе надо освоить
Тимофей, все реально, не боги горшки обжигают.
Пару полезных советов:
1) у вас должна быть конкретная цель для чего вам это нужно.
2) методичность и системный подход: занимайтесь каждый день по чуть-чуть. Определите минимум времени, который вы будете каждый день уделять программированию. Лучше заниматься каждый день по чуть-чуть, чем раз в неделю сидеть целый день.
3) ставьте краткосрочные реальные цели, это добавит мотивации.
4) тесты, один из лучших методов проверки знаний. Прошли что-нибудь сделайте карточки или ответьте на вопросы из книги или попросите знакомых программистов по задавать вам вопросы на понимание.
Не спеши (а то еще курить начнешь ;) растяни удовольствие. Тебя ждет приекрасный мир ООП ахаха )
кста — private bool IsReady {} это не переменная, а метод (функция) класса..
Учиться лучше если не тупо читать, слушать а обязательно прорабатывать написанием кода (не копипейстом) из задач (наверняка есть) по каждой теме. Накодил, запустил и порадовался. )
Я начинал с бейсика, потом 1С 7.5(7.7), потом плюнул и стал нанимать тех, кто делает это лучше меня. Чем и занимаюсь по сей день. Моих знаний хватает, чтобы наскидку увидеть простые ошибки в коде и слегка поправить, например, цвета в выдаче, но мне этого достаточно. Лучше заплатить десятку программеру (5 за создание алгоритма и 5 за код), чем тратить два года на изучение. Почему важно, чтобы исполнитель с вами мог проработать ТЗ-потому что он может подсказать решения, которые вам бы и в голову не пришли. Поэтому не стесняйтесь рассказывать свои идеи, оформлять их в ТЗ и воплощать в коде чужими руками. Но если совсем стремно, то не выдавайте реальных параметров системы, дайте приближенные. Например, у вас МА 120 и 64, попросите сделать робота с параметрами МА 100 и 50 и сделать параметры в виде переменных, которые вы сами потом сможете поменять.