• Кто такой кодер? и чем он отличается от программиста?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Могу себе представить некую абстрактную контору, которая разрабатывает ПО. В этой конторе персонал непосредственно вовлеченный в процесс имеет разные роли. Есть, например, архитекторы, а есть - кодеры. Хотя, если в общем рассмотреть, то и этот, и другой - программисты (например, с точки зрения бухгалтера этой самой конторы).
    То есть получается, что программист это более общее понятие по сравнению с кодером.

    Хотя я слышал такие фразы: "Да какой он программист! Он так....кодер...". В этом смысле понятия кодер и программист, вроде как, противопоставляются.

    Я еще пару терминов знаю =)
    Разработчик программного обеспечения. В этом термине уже виден некий промышленный подход. То есть это профессионал , который пишет хорошие, добротные, поддерживаемые приложения, возможно не гениальные, но выполняющие поставленную задачу. Приложения разработчика ПО можно легко развивать и модифицировать при необходимости.

    Хакер. (Не в смысле взломщик, а в смысле специалист широкого профиля в computer science). Для него программирование - это инструмент. Он решает задачу здесь и сейчас. Часто из "спортивного" интереса. Ему интересно имеет ли решение задача в принципе. Часто использует какие-то нюансы применяемых инструментов, недокументированные возможности и, откровенно, дыры, что, возможно, и приводит к решению в кратчайшие сроки, но использовать код хакера в продаваемом коде может привести к непредсказуемым результатам.
    Ответ написан
    Комментировать
  • Как научиться писать масштабируемый и понятный для другого человека код на си-подобных языках?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Порекомендую вот такую книгу для старта. Там описывается паттерн внедрение зависимостей и инструменты для него. В целом это позволяет писать слабо связанные программы, избегать спагетти-кода.
    Еще можно посоветовать писать тесты для кода. Рано или поздно стиль кода начнет меняться. Опять же код станет более модульным, слабо связанным.
    Эти две рекомендации по сути две стороны одной медали.
    Ну и "Совершенный код...." раз в полгода перечитывать =).
    Ответ написан
    Комментировать
  • Не удаляются ярлыки в главном меню при деинсталляции приложения. В чем дело?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Удалось самому разрешить проблему.
    В компоненте ApplicationShortcut Guid должен быть уникальным, а значит его нужно пересоздавать при каждом Build`e.

    ....
    <Component Id="ApplicationShortcut" Guid="*">
    ....


    Ох и попила мне крови эта звездочка!!!
    Ответ написан
    Комментировать
  • Какую книгу/учебник Вы бы предложили для изучения C# от уровня новичка до профессионала?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    1. К.Нейгейл, Б.Ивьен, Дж.Глин, К.Уотсон, М.Скиннер "C#4 и платформа .NET4 для профессионалов" (хотя есть книги из этой серии и для С#2, и для С#3, и для С#4,5) подробно описаны основы языка.
    2. (через год) Дж.Скит, "С# для профессионалов. Тонкости программирования" (описаны различия С# разных версий и зачем они были введены)
    3. (и еще через год ) Дж.Рихтер, "CLR via C#"(более глубокое погружение в язык)


    Но на самом деле не обязательно читать их с таким большим промежутком. Их можно читать и параллельно. Лишь бы было понятно о чем речь. Обязательно параллельно книгам, разрабатывать какое-нибудь приложение (лучше несколько по очереди с усложнением), иначе обучение будет поверхностным. Книги толстые, информации много. Информацию нужно завязать в знания, выстроить свои какие-то связи. Это только через практику.

    Я время от времени возвращаюсь к этим книгам как к справочнику, а иногда открываю в них что-то новое для себя, то что раньше пропустил из-за того, что не был готов.
    Ответ написан
    Комментировать
  • Как в Visual Studio добавлять .h и .cpp файлы в каждый проект?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Есть возможность добавлять ярлыки/ссылки на файл в проект. В контекстном меню проекта "Add|Existing Item" выбрать необходимый файл, но нажать не кнопку "Add", а нажать небольшую треугольную стрелочку вниз справа от кнопки "Add" и затем нажать "Add As Link".
    Ответ написан
    Комментировать
  • Можно ли учить детей электротехнике не вникая в нюансы?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Мне кажется можно.
    Если особо не придираться, то все основные идеи электроники можно объяснить на основе следующих понятий:
    • закон Ома,
    • источник тока,
    • источник напряжения

    Закон Ома совсем не обязательно давать в виде формул с умножениями и делениями, можно и на пальцах, аналогиями. У Эдуарда Успенского есть книжка "Лекции профессора Чайникова" (гуглится, у меня первая ссылка - pdf): вот как то так. А если еще и с наглядной демонстрацией, да если еще самим что-то дать в руки попробовать - самое то.
    Единственное, не представляю как обезопасить от розеток. Когда электричество "на столе" такое интересное и послушное, не захочется ли без присмотра взрослых собрать что-то "покруче"? Нужен, наверное, какой-то конструктор, который не даст чисто физически подключиться ко "взрослым" напряжениям. И аккуратно рассказывать про "все металлы проводят ток, вот, к примеру, гвоздь...." .
    К UPD2: а почему бы до кучи не попробовать самим какую-нибудь простую ардуину собрать? Чтоб и плату потравить, и основы пайки освоить. Вспоминаю себя в 6м классе: да я бы из школы не уходил =). Да, хлорное железо домой не давать, только под присмотром.
    Ответ написан
    2 комментария
  • Как реализовать паттерн "Наблюдатель" при нажатии на кнопку?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Еще вот ссылка: Вики.Наблюдатель
    Ответ написан
    Комментировать
  • Вопрос по языку с# ?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Для красоты можно добавить еще сокращение, выделение целой и дробной части, неявное приведение целых чисел к рациональным....
    Ответ написан
    Комментировать
  • Стоит ли изучать JavaScipt и C# одновременно с нуля?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Расскажу свои субъективные впечатления.
    Я достаточно неплохо знаю С# и сравнительно недавно начал изучать JS.
    Сначала С# тебя "ведет" в обучении, он не дает делать совсем глупые вещи, он обучает тебя ООП. Конечно, можно писать на С# и в процедурном стиле, но в основном в книгах и видеоуроках вас будут учить в С# объектно-ориентированному программирования, а потом через несколько лет вы (возможно =) ) придете к паттернам проектирования.

    С JSом все не так. В JS можно много того что нельзя в С#. JS - это свобода самовыражения. Нужно четко понимать: что вы хотите сделать и как вы это хотите сделать и почему нельзя делать по другому, хотя это проще. Я бы назвал JS даже не языком, а метаязыком. Чтобы работать с JS нужно самому определить себе правила и им следовать (С# сам эти правила задавал). А вот какие выбрать правила, тут уже нужен опыт.

    С# можно изучать самостоятельно легко и ненапряжно, а для JS нужны определенные знания и опыт. Я думаю можно совместить, но, по моему мнению, в таком случае для JS нужен хороший живой наставник.
    Ответ написан
    2 комментария
  • Как решить данную задачу?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Еще один вариант со связанным списком
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace throughOneKill
    {
        class Program
        {
            static void Main(string[] args)
            {
                int N = 10;
    
                var list = new LinkedList<int>(Enumerable.Range(1, N));
                Console.WriteLine(string.Join(" ", list));
                var currentItem = list.First;
                while (list.Count != 1)
                {
                    list.Remove(currentItem.Next ?? list.First);
                    currentItem = currentItem.Next ?? list.First;
                }
                Console.WriteLine(list.First.Value);
    
                Console.ReadKey();
            }
        }
    }
    Ответ написан
    Комментировать