• Как наладить взаимодействие между двумя простыми консольными приложениями?

    EreminD
    @EreminD
    Кое-что умею
    Самое простое, если два простых консольных приложения, то я бы так сделал

    Из "меню" запускаешь процесс (вот такой) с нужными тебе параметрами

    Второе приложение должно быть готово получать параметры командной строки (args[]) и работать с ними

    Работы на 20 минут
    Ответ написан
    Комментировать
  • Как лучше получить базовые знания по программированию?

    @LeonidShifrin
    Разработчик, Wolfram Research Inc. PhD, Physics
    Изучите один из функциональных языков. Проще всего начать со Scheme. Это поставит Вам мышление правильно, и даст общее понимание принципов программирования. Вам уже советовали SICP, я еще от себя добавлю HTDP (How to design programs) - как раз рассчитана на начинающих. Порешайте на нем алгоритмические задачи. Хороший источник - Project Euler. По более общим задачам посмотрите Rosetta Code. Не ставьте задачу сразу начать применять это к Вашим приложениям, просто спокойно развивайтесь.
    На первом этапе постарайтесь по минимуму использовать готовые библиотеки - разве что для проверки.

    Постепенно переходите к более сложным задачам. Не зацикливайтесь на чисто алгоритмических задачах - они хорошо ставят мышление, но в реальной жизни лишь часть кода полностью алгоритмизуется, и дизайн кода занимает большее место чем именно алгоритмы (если не брать более специализированные области вроде ML). Если не брать математические задачи, то хорошие задачи возникают в областях работы с текстами, преобразования данных. Скажем, упрощенный вариант HTML или XML парсера, или задачи по анализу текстов, или например перевод данных из одного формата в другой. Напишите пару простых интерпретаторов. Реализуйте парсер для какого-нибудь языка (возможно, его упрощенного варианта). Не стесняйтесь находить ресурсы с тем, что близко в Вашим задачам, и читать чужой код (это необходимо!) - но и не работайте по принципу copy - paste.

    Неплохой задачей будет например реализовать парсер и интерпретатор для какого-нибудь trading - языка, вроде metastock, с парой десятков основных финансовых индикаторов. И к нему в довесок - собственный упрощенный парсер скажем CSV формата - так что Вы сможете загружать данные по стокам и прогонять торговые стратегии целиком на собственном коде. Ну и например, генератор HTML - отчета с графиком и точками входа и выхода для данной стратегии, плюс отчетом о доходности. Можете потом поднять простое web-приложение, которое будет гонять торговые стратегии на исторических данных, хранящихся скажем как CSV файлы - и все это на Scheme. Потом можете перейти на использование реальной БД. Это уже будет в совокупности неплохой проект. Чем меньше будете использовать готовых библиотек - тем лучше, цель здесь - учеба, а не максимальная эффективность.

    Почувствуйте как средства языка позволяют писать лучший код. Освойте на практике основные принципы: отделение интерфейса от имплементации, факторизация общего кода, сокрытие информации, модуляризация кода, отделение поведения от состояния (это общие), ну и вкусные вещи от функционального стиля - преимущества неизменяемого состояния, функции высшего порядка, замыкания, рекурсия, рекурсивные структуры данных, метапрограммирование.

    После этого, Вам станет понятным многое из того, что при другом подходе придется просто запоминать и брать на веру, в более распространенных языках типа Java или Python. Вы будете в состоянии отличить действительно важные черты языка от чисто утилитарных. В том числе, Вы сможете увидеть и слабые места изучаемых языков, отсутствие определенных важных абстракций, и как эти проблемы решаются. В конечном счете, Вы сможете на глубоком уровне освоить другие языки в гораздо более сжатые сроки. И не станете бездумным адептом той или иной модной сейчас религии (ООП, шаблоны проектирования, и т.д.) - а будете понимать место этих вещей в общей картине.

    И еще один момент: если у Вас хромает Английский, подтяните его. Специально этим не нужно заниматься, просто читайте литературу на Английском - всегда. Это сделает Вас частью большего сообщества, даст доступ к гораздо большей базе ресурсов. На более продвинутом уровне, это важно еще и потому, что Вам будет легче писать код, когда Вы начнете думать на Английском - он ближе к формальным языкам.
    Ответ написан
    Комментировать
  • Как выводить в консоль текст, который можно будет редактировать?

    @vilgeforce
    Раздолбай и программист
    Хехе, ну это будет весело. Я сходу вижу такое решение: нужно ловить нажатия клавиш, если это обычный символ - добавлять его в буфер и выводить на экран. Если это backspace - удалять из буфера последний символ и выводить на экран "\b " для затирания последнего выведенного символа. Соответственно, в момент нажатия Enter ничего с экрана читать не надо, достаточно взять из буфера.
    Ответ написан
    Комментировать
  • Как обратиться к табличной части обработки?

    @Dementor
    программист, архитектор, аналитик
    Ваша ошибка заключается в недопонимании различий между метаданными. Обработки в отличии от справочников, документов и так далее не описывают хранимую в базе данных информацию - это набор алгоритмов по обработке данных и описание графического/программного интерфейса взаимодействия с пользователем.

    В реквизитах обработки, а так же на форме обработки в реквизитах самой формы могут размещаться некоторые данные, но данные из значения таких реквизитов существуют только на протяжении времени жизни обработки. Ни до создания экземпляра обработки, ни после её закрытия эти данные не существуют.

    В вашем примере существует обработка под названием "Связь", в которой есть табличная часть "Таблица". Запросы языка 1С указанным вами способом (путь по метаданным) могут получать выборки лишь из данных, которые сохранены в СУБД базы. Т.е. у вас ничего не выйдет. Но язык запросов позволяет делать запросы еще и к структурам в памяти, если их передавать в качестве параметров. Вы можете поступить следующим образом:

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Таблица", Таблица);
    Запрос.Текст = 
    "ВЫБРАТЬ Т.Документ, Т.Клиент, Т.Сумма
    |ПОМЕСТИТЬ втТаблица
    |ИЗ &Таблица КАК Т;
    |
    |ВЫБРАТЬ Клиент, СУММА(втТаблица.Сумма)
    |ИЗ втТаблица
    |СГРУППИРОВАТЬ ПО Клиент";
    Итоги = Запрос.Выполнить().Выгрузить();
    Ответ написан
    1 комментарий
  • Как обратиться к табличной части обработки?

    @thepry
    Ruby on rails, 1С разработчик
    когда создаю запрос, который обращается к данным табличной части, он не может найти мою табличную часть то есть "не удалось найти таблицу и указывает на кусок кода с "ИЗ Обработка.Связь.Таблица". Как только путь к таблице не указывал уже.


    Дело в том, что запрос обращается к базе данных. Обработки не имеют таблиц в БД и ничего там не хранят., во-вторых вы эту таблицу заполняете интерактивно, даже, если бы у вас была табличная часть документа, или справочника, то все изменения, которые вы внесли в открытой форме были бы еще не записаны в БД.

    Собственно, что можно сделать: запросом получать данные из таблицы значений, которая передается параметром.
    Код будет вида
    Запрос.Текст = "Выбрать ...бла-бла-бла... Из &ТаблицаЗначений;"
    Запрос.УстановитьПараметр("ТаблицаЗначений", Объект.МояТабличнаяЧасть.Выгрузить());


    А вообще, если вам нужна только пара документов, то запрос не нужен - ссылки уже находятся в таблице и достаточно ее обойти в цикле.
    Ответ написан
    3 комментария
  • Какую литературу выбрать крайне ленивому студенту?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Написать эту программу на С, оттранслировать в ассемблер, прочитать и понять, что получилось и как это работает.
    Ответ написан
    Комментировать
  • Как лечится кризис начинающего программиста?

    @Eserchik
    В процессе обучения важную роль играет "проблемно-ориентированный подход"
    Задача программирования решать проблемы или задачи!
    Т.е ставите задачу на начинаете ее решать.
    В процессе решения вы будете сталкиваться с непонятками, вот их решение вы и будете искать в теоретических материалах.

    Я бы делал так:
    1) Программирование ради программирования не имеет смысл.
    Нужен результат работы который бы удовлетворял ваше эго (результат который реальный пользователь сможет потрогать и оценить, а возможно и купить)
    2) C# заменил бы на на что то более практичное например на Java или Obj-c,
    Объяню С# применяется B2B секторе или B2C, обычно - это некие проекты для компаний, т.е пока у вас нет компании и проекта, результат вашей работы никто не оценит, соответственно смысла этим заниматься особо нет.(Вам будет скучно,т.к это "Обезьяний труд")
    Лучше начать учиться с разработки мобильных приложений, так кол-во скачиваний и лестные отзывы будут греть ваше эго, т.е уже появляется цель для чего это делать

    3)Как лучше это делать.
    Берете любое приложение с большим кол-вом скачиваний ипытаетесь сделаеть, такое же, но только лучше(Лучше в интерфейсе или каких то плюшках. В общем главное сделать лучше).
    Ответ написан
    Комментировать
  • Как лечится кризис начинающего программиста?

    DEFAULT0
    @DEFAULT0
    Раз два три четыре пять Slender идет тебя искать.
    Каждому нужен свой подход, попробуйте начать с книги Head First, и желательно не цифровую лицензию удачи.
    Ответ написан
    Комментировать
  • Как лечится кризис начинающего программиста?

    kumaxim
    @kumaxim
    Web-программист
    Господин начинающий, у Вас извращенный подход к программированию в целом.
    Программа - это способ более эффективно решить какую-то задачу... способ достижения какой-то заданной цели с меньшим количеством ресурсов.

    Возьмем, как пример, тот же бух.учет на предприятии. Как Вы думаете, почему 1С Бухгалтерия так широко распространилась в РФ и СНГ? Эта программа позволяет бухгалтеру в 2-3 клика мышки сформировать отчет для регулятора(ФНС, ПФР и т.д.), вместо того чтобы человеку сидеть руками искать платежные поручения, вычислять налоги и т.п. Софт просто подтягивает выписку из банка, анализирует ее и выдает готовую для печати бумажку, что экономит бухгалтеру сильно много времени. Расчет заплатанный налогов и отчеты в соц.фонды это вообще красота - 8 кликов мышкой и все готово :-)

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

    И вот, далее Вы для себя определитесь, какая Ваша основная цель? Какой Ваш основной посыл обществу?

    Личной мой посыл - "Я помогаю людям экономить: время, деньги, нервы и т.д.".

    Как я это делаю?
    У меня сначала был маленький интернет-магазин по продаже катализаторов для бензина(в поиск "кондиционеры метала для а/м"). При соблюдении определенных условий, расход топлива на малометражках снижался от 20% до 45%
    Вторым моим проектам было небольшое мобильное приложение для отслеживания хода исполнительного производства в ФССП(для взыскательней, уже сдохло). Мне и моим знакомым(не юристы) это экономило достаточно много времени на ругань с приставами, чего они должны делать и т.д. Кто сталкивался с этой службой должен знать эффективность и оперативность их работы, особенно в регионах...
    Сейчас я пишу небольшой конструктор сайтов, который поможет одной дружественной мне веб-студии сильно оптимизировать процесс создания низкобюджетных сайтов визиток

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

    Когда Вы пишите программу Вы должны понимать с какой целью Вы ее пишите. Сможет ли ее написание приблизить Вас хотя бы на пару сотых процента к осуществлению Вашей цели, будет ли это укладываться в Ваш посыл обществу. Осознайте это чисто для себя, не нужно это где-то писать.

    Если говорить о чисто практических инструментах(функции стандартной библиотеки, фреймворки и т.д.)... Лично я могу считать себя профессионалом в какой бы то ни было технологии, ни когда я прочитал 1-2 книги и/или написал 1,5 задачи оттуда же. С таким уровнем я не могу сказать что я знаю язык/технологию в принципе, просто знаком - да, но я ее не знаю. Считать себя профессионалом я могу после того как решу не менее сотни задач, используя эту технологию и написал не менее 1 млн строк кода, именно написал, а не сгенерировал rake/gii/artisan или чем-то там еще.

    Вам же я желаю не останавливаться, развивайтесь. Мастерство приходит с опытом.

    P.S.: от холиваров на тему 1С прошу всех воздержаться
    Ответ написан
    11 комментариев
  • Как лечится кризис начинающего программиста?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Начинай писать какой-нибудь проект. Я в свое время, когда учился программировать (правда по другой книге: "С# для профессионалов" какая-то из редакций), тоже заскучал.....начал писать проекты (например, решение системы линейных уравнений с произвольным порядком, что-то с нейронными сетями еще делал, с СОМ-портом что-то)....появилась какая-то уверенность в своих силах.....появились вопросы....искал в "интернетах", возвращался к книжке....в итоге язык освоил, а книжку использую как справочник.
    Ответ написан
    Комментировать