Задать вопрос
  • Как работает C#?

    Nipheris
    @Nipheris Куратор тега C#
    А откуда берётся этот MSIL? Куда компилируются .cs?

    cs компилируются компилятором. Есть стандартный csc, поставляется вместе с .net framework (НЕ со студией). Это "классический" компилятор от MS, написан на C++, с закрытым исходным кодом. Такой же есть и для Visual Basic. Кроме них есть еще Roslyn-компиляторы C# и VB, они open-source, их главное отличие в том, что они сами написаны на управляемых языках. Это значит, что у вас есть compiler-as-a-service. Это, в свою очередь, значит, что если вы хотите написать тулзу, обрабатывающую тем или иным образом исходный код, например на C#, вам не нужно самому писать парсер/компилятор, вы можете подключить модули Roslyn-компилятора и пользоваться ТЕМ ЖЕ компилятором (лексером/парсером/etc), что и используется непосредственно при сборке приложения. С классическим компилятором так не получится, он представляет из себя черный ящик: cs на входе, сборка на выходе.

    Далее будем считать, что не учитываем в рассуждениях технологию .net native.
    в каком моменте тогда работает виртуальная машина

    она работает в момент запуска exe.
    почему мы получаем на выходе .exe

    в этом вопросе часто возникает путаница. Дело в том, что дотнетовские exe и dll - это т.н. сборки (assemblies), и они содержат метаданные и MSIL (!) исполняемый код. То, что у них расширения exe и dll - это потому, что MS для повышения совместимости и удобства использования, упаковала их в формат PE. Чтобы .net приложения можно было запускать также, как и нативные. НО реально в exe-файле есть только небольшой загрузчик, который запускает CLR, просит загрузить текущий файл как дотнет-сборку и передать управление на метод-точку входа. Почитайте про сборки в хорошей книге, и скачайте dotPeek, посмотрите что внутри дотнетовского exe. Это совсем не то, что в "обычном", нативном exe.

    В мире C# существуют также такие понятия как .NET, Mono, Roslyn и т.д., можете ли вы структурированно разъяснить их смысл?

    .NET это название и бренд платформы, .NET Framework, а теперь и .NET Core - реализации платформы от MS, Mono - open-source реализация НЕ от MS. .NET FW работает только на винде, .NET Core и Mono и на других платформах. Про Roslyn уже упомянул.
    Ответ написан
    Комментировать
  • Как работает C#?

    Рекомендую книгу Рихтера "CLR via C#"
    Ответ написан
    Комментировать
  • Какой из дистрибутивов Linux подойдет для веб и java?

    erniesto77
    @erniesto77
    oop, python, php, js
    абсолютно любой
    Ответ написан
    Комментировать
  • Какой из дистрибутивов Linux подойдет для веб и java?

    @cthulhudx
    Ubuntu или Linux Mint
    Ответ написан
    Комментировать
  • Что будет за публикацию уязвимости/бага в публику?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Обычно делается так, багхантер находит уязвимость, изучает ее. Затем уведомляет тех, в структуре кого эта уязвимость находится, ждет некоторое время, если нет сподвижек по устранению уязвмости - публикует статью на тематическом ресурсе, пользуется уязвимостями, забивает на это дело - все в рамках его воображения.
    Однако ответственность за действия присутствует. Если в договоре связи указаны пункты о нештатных действиях относительно услуг связи, то за это могут и бо-бо сделать. Лучший профит в первую очередь - составление статей, получение опыта и славы специалиста, а уже потом выгода, полученная на оплошностях.
    Ответ написан
    Комментировать
  • Ставить ли фигурные скобочки?

    aminought
    @aminought
    Правилом хорошего тона считается постановка фигурных скобок в любом случае. Для вдохновения можете прочитать вот эту статью: Исключительная красота исходного кода Doom 3
    Ответ написан
    2 комментария
  • Есть ли IDE способная создавать консольные приложения Win32 из по Linux(кроме Visual Studio и Eclipse)?

    gudvinr
    @gudvinr
    Code::Blocks, QtCreator
    В обеих возможно настроить кросс-компиляцию посредством, например, mingw.
    Ответ написан
    1 комментарий
  • Есть ли готовая библиотека загрузчика для C#?

    @vilgeforce
    Раздолбай и программист
    Дозагрузка зависит от сервера, насколько я помню. А так curl.
    Ответ написан
    Комментировать
  • Поиск решения задачи, не похожей на предыдущие. Есть ли идеальный алгоритм?

    @dmitryKovalskiy
    программист средней руки
    Вот вы вроде опытный программист, Senior. Но хотите найти "идеальный" алгоритм для решения любой задачи. Я думаю что если бы имелось решение - задача про P/NP давно была бы разобрана, а миллион долларов пропит. К сожалению ИТ-индустрия, за счет зарплат выше среднего по всему рынку труда, привлекает к себе людей, не знакомых даже с самим понятием алгоритма. Умные специалисты рассказывают что "математика не нужна", а "высшее образование только мешается". Как итог мы имеем определенный пласт людей, прочитавших пару книг по синтаксису, решивших задачу обхода конем и уже считающих себя программистами. Я вот с завидной регулярностью на данном ресурсе нахожу вопросы вроде "мне 16 лет, как заработать фрилансом программиста". Да возможно человек - Билл Гейтс или другой гений отрасли, но тогда вряд ли бы он задавал здесь вопрос. Да, может быть разная финансовая ситуация и людей вынужденно толкают за заработком. Но итог - практически полное отсутствие подготовки в области алгоритмов, архитектуры, паттернов проектирования и прочее, а зряплату уже хочется хорошую. Я сам не без грешен в этом отношении. Желаю вам терпения и талантливых junior-ов. Но их будет меньшинство.
    Ответ написан
    2 комментария
  • Когда неявно вызывается деструктор?

    Olej
    @Olej
    инженер, программист, преподаватель
    Прошу перечислить возможные варианты

    Вариант единственный: деструктор в C++ вызывается ровно в тот момент, когда уничтожается объект.
    Всё. Точка.
    Никаких других "вариантов" нет и быть не может, потому что в C++ не может быть сборки мусора.

    А вот когда объект уничтожается - тут могут быть некоторые варианты: явное и неявное уничтожение, уничтожение по выходу из блока, уничтожение по эпилогу программы... Здесь разница уже в том. что называют "время жизни" объекта.
    Ответ написан
    4 комментария
  • Что делать после изучения С++?

    1. По своему, не так уж чтобы очень богатому, но тем не менее опыту скажу, что простое чтение книг или форумов, просмотр видеоуроков и т.д. глубокого понимания не дает. Важна еще практика. Лучший способ, который я открыл для себя - придумываешь интересную для себя задачу, начинаешь ее реализовывать. Если что то не знаешь - смотришь или читаешь уроки по теме, которая тебя интересует. Не стремись сразу написать что то большое и чтобы все было чисто и красиво, пусть будет криво и убого, главное чтобы работало, ты понимал как это работает и было желание и идеи как это улучшить. Почему такой способ хорош - ты сразу качаешь навыки и в проектировании и в программировании и в планировании задач для себя, так как выучить синтаксис языка это на самом деле основы, есть много других важных тем, в которых важно разбираться, если хочешь писать хороший софт - это и методологии разработки и системы контроля версиями и тестирование и проектирование и многое другое. В начале будет довольно трудно, будет куча нюансов, которые придется решать, но со временем, если не будешь сачковать ты заметишь как вырос твой уровень. Если интересует программирование графики - садись писать свой движок. Собственно, я сам сейчас этим занимаюсь, это была тема моей курсовой и сейчас дипломной работы.
    2. Их много и большинство зависит от задач и здесь важнее общее понимание как работать с чужим кодом, как найти что то по докам и т.д. А по поводу конкретных библиотек - если пишешь на плюсах, то по любому, как уже написали, стоит обратить внимание на STL и желательно еще на Boost.
    3. Только если ты понимаешь какие плюсы ты от этого получишь.
    4. Обновлять софт вообще очень стоит. Про Code::Blocks ничего сказать ничего не могу, но не думаю, что стоит переходить со студии. А вообще, я тебе советую поэксперементировать и попробовать компилировать код без IDE, чтобы понять как происходит процесс компиляции и линковки, это тебе очень поможет (но в реальных проектах лучше выбирать самое быстрое рабочее решение)
    Ответ написан
    2 комментария
  • Почему Visual Studio не открывает файл в момент дебага?

    magalex
    @magalex
    Архитектор распределённых систем управления
    По умолчанию, при запуске проекта из студии, текущей директорией является директория проекта. Поэтому во время отладки программа не находит нужный вам файл (который лежит в другой директории - в папке debug. Это поведение можно поменять в настройках проекта:
    2cf86141b4614fda889c669d8db45009.PNG
    Ответ написан
    1 комментарий
  • Почему не советуют использовать технологии Borland?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Очень долгое время был устаревший компилятор C++. Насколько мне известно, в XE10, совсем недавно, решилось (не проверял). Слоупоки!
    2. А почему? Где-то с 2001 года Borland натурально начхал на Delphi. Delphi 7 долгое время был самым лучшим — пока не появился 2010. Новые владельцы восстанавливают упущенное, но не всё идёт как надо (XE4 реально глючнее XE2, буду ещё думать, что лучше держать под Win10, чтобы работало с тамошней средой .NET).
    3. Кажется, они поставили не на тот кроссплатформенный фреймворк. FireMonkey — имитация стандартных элементов управления. Медленно и глючно. А если ради чего-то решил выключить ClearType — вообще атас!
    4. Бесплатный WinForms отобрал немалую аудиторию у тех, кому надо быстренько написать программу только под Windows. Но это скорее аналог VCL, чем FireMonkey.
    5. Embarcadero — фактически единственные, кто поддерживает хороший Паскаль.
    Ответ написан
    Комментировать
  • Разработка собсвенного игрового движка на java.С чего начать?

    @protven
    Ответить на вопрос "а нужен ли он мне и кому-то еще ?"
    Ответ написан
    2 комментария
  • Windows 7, PyCharm 5.0.1, как превратить в EXE файл?

    icCE
    @icCE
    youtube.com/channel/UC66N_jRyZiotlmV95QPBZfA
    Вам надо использовать pywin32

    Прочитайте более подробно тут.

    habrahabr.ru/post/104589
    Ответ написан
    Комментировать
  • Windows 7, PyCharm 5.0.1, как превратить в EXE файл?

    @nirvimel
    Ответ написан
    Комментировать
  • Какую библиотеку лучше использовать для разработки GUI?

    @EvgeniyKonstantinov
    Честное слово, про OpenFrameworks сейчас впервые услышал. А Qt проверенное годами решение. И с лицензией Qt в вашем случае проблем нет - используйте LGPL.
    Ответ написан
    6 комментариев
  • Как проанализировать программу на уязвимость?

    @vilgeforce
    Раздолбай и программист
    Берете IDA, берете отладчик. Открываете в Иде файл, долго вкуриваете, ищете подозрительные места, проверяете в отладчике свои догадки. Для автоматизации очень долго вкуриваете что такое IDA, что такое Assembler под целевой камень, как все это работает, потом пишете скрипт на Питоне для Иды, который будет искать подозрительные места.
    Ответ написан
    Комментировать