Comments 208
Получается в MS не используют свой же C# даже для калькулятора.
C# по историческим причинам не популярен среди команды Windows
- Команда винды и команда development tools, представляете, разные команды.
- Команда Windows крайне консервативна и любит велосипеды. В частности, убедить из перейти на git удалось только в 2018 году, кажется.
- Команда development tools, наоборот, очень любит Шарп и всюду его пихает.
- Вообще C# популярен в MS, например в бинге
The purpose of this platform is to help develop universal apps that run on Windows 10, Windows 10 Mobile, Xbox One and HoloLens without the need to be re-written for each.
Замечательно. Братва, кто хочет поиграть в калькулятор на Xbox? :)
Дэсматч в калк по сети на хололинзах (ёпт)
Будет. Но асимптотически. То есть стремиться будет, а достигать — нет. Как падать в чёрную дыру. А по пути его будут ещё и лопиталить по самое небалуй.
Все эти языки лажа?
Выбор языка для проекта вообще не показатель. Команда выбирает инструмент под свои задачи. И не важно, разработан инструмент в этой компании другим отделом, или в другой компании.
Тем более что проект создавался ещё до появления С#
Все эти языки лажа?Видимо — да. Были бы языки действительно хороши, на них бы мейнстрим и писался. Все языки вроде как общего назначения.
Тем более что проект создавался ещё до появления С#Проект создавался и до UWP, однако был переписан.
Тут бы даже я поставил минус если бы мог
Проект не был переписан на UWP. Потому что UWP не язык
Кстати, а почему c#, а не f#?
А если бы переписали на c#, это говорило бы о том, что f# «настолько хорош»?
А по поводу плюсов, которые были упомянуты — видимо они настолько универсальные и крутые, что чуть не каждый год новый стандарт выходит. Странно, что такой хороший язык продолжают дорабатывать.
Видимо, Майкрософт должен был сразу переписать свои продукты на c# как только он появился.Шарпею, уже, слава Богу, сто лет в обед. Могли бы и переписать, хотя бы часть софта. Начиная хотя бы и с калькулятора как раз. Однако увы.
Проект не был переписан на UWP. Потому что UWP не языкUWP не язык, но одна из технологий. Почему UWP используют, а .net нет? Причем почти нигде.
Кстати, а почему c#, а не f#?Не имеет значения, пусть и F#.
А по поводу плюсов, которые были упомянуты — видимо они настолько универсальные и крутые, что чуть не каждый год новый стандарт выходит. Странно, что такой хороший язык продолжают дорабатывать.Ладно старые, так и новые вещи пишут не на .net. Я уже писал, но повторюсь: гуй Скайпа, VSCode.
Тут бы даже я поставил минус если бы могОчередной кармадрочер? :)))
Как же хабровчане обожают душить альтернативные мнения :)
Шарпею, уже, слава Богу, сто лет в обед. Могли бы и переписать, хотя бы часть софта. Начиная хотя бы и с калькулятора как раз. Однако увы.
Переписать для чего? Ради того, чтобы переписать? Что за бред
UWP не язык, но одна из технологий. Почему UWP используют, а .net нет? Причем почти нигде.
Потому что .net это платформа. И на неё надо именно переписывать. Её нельзя внедрить частично.
И .net используется в массе продуктов. Не верю, что вы никогда не слышали про хотя бы unity
Не имеет значения, пусть и F#.
Угу, вам всё равно, я понял
Ладно старые, так и новые вещи пишут не на .net. Я уже писал, но повторюсь: гуй Скайпа, VSCode.
vscode это вообще-то atom. Я понимаю, что уровень аргументации примерно такой: они могли переписать атом на c#, но раз не сделали этого, значит c# отстой — но такая аргументация не имеет отношения к здравому смыслу.
Visual studio на шарпе написана. Как вам это?
Очередной кармадрочер? :)))
Как же хабровчане обожают душить альтернативные мнения :)
Дело не во мнении. А в неспособности к адекватной оценке. Заявлять, что с# плох потому что майрософт не переписала на нём свои продукты это именно неспособность к адекватной оценке.
Переписать для чего? Ради того, чтобы переписать? Что за бредРади продвижения своей «мега-технологии» хотя бы.
Потому что .net это платформа. И на неё надо именно переписывать. Её нельзя внедрить частично.Ок, отлично. Что можно сделать лучше того, для продвижения своей технологии в мире, чем писать свой же софт на ней? Однако же нет.
Угу, вам всё равно, я понялМне — да. Удобно писать на F# — пусть так. Главное — результат.
vscode это вообще-то atom. Я понимаю, что уровень аргументации примерно такой: они могли переписать атом на c#, но раз не сделали этого, значит c# отстой — но такая аргументация не имеет отношения к здравому смыслу.Atom+Electron, интерфейс — JS+CSS, Сишарпа, увы, нет. Аргументация простая: если Шарп действительно настолько хорош, насколько о нем рассказывают, то логично же его максимально использовать во всех своих продуктах. Однако этого и близко нет.
Visual studio на шарпе написана. Как вам это?Частично да, но не полностью.
Заявлять, что с# плох потому что майрософт не переписала на нём свои продукты это именно неспособность к адекватной оценке.Моё мнение такое, что если бы язык/платформа были действительно отличными и революционными, то большая часть продуктов была бы переписана. А уж новые и подавно.
Ради продвижения своей «мега-технологии» хотя бы.
Она и так отлично продвигается
Ок, отлично. Что можно сделать лучше того, для продвижения своей технологии в мире, чем писать свой же софт на ней? Однако же нет.
Так пишут же
Atom+Electron, интерфейс — JS+CSS, Сишарпа, увы, нет. Аргументация простая: если Шарп действительно настолько хорош, насколько о нем рассказывают, то логично же его максимально использовать во всех своих продуктах. Однако этого и близко нет.
Не atom + electron, а просто atom. Который уже сделан на электроне. Как вы видите использование c# в электроне?
Было бы верхом идиотизма брать продукт, переписывать его на новом языке и обеспечивать поддержку всех расширений и плагинов. Вы именно такой идиотизм предлагаете судя по всему.
Это исключительно ваша логика. Ms не один язык создала. И если бы они руководствовались вашей извращённой логикой, то они должны были бы сначала всё переписать на vb, потом на visual j++, потом на c#, потом на f#, потом на typescript…
Наверняка я что-то упустил.
Частично да, но не полностью.
Частично недостаточно? Какой процент должен быть, 80? 90? 146?
Моё мнение такое, что если бы язык/платформа были действительно отличными и революционными, то большая часть продуктов была бы переписана. А уж новые и подавно.
Ваше мнение вызвано тем, что вы не понимаете пары вещей:
1 — бизнес не переписывает продукт просто для того, чтобы переписать на новую технологию
2 — нет универсальных языков программирования
C# отличный язык. Один из самых удобных, на которых мне доводилось писать. Какие именно его концепции вы считаете плохими?
Она и так отлично продвигаетсяОна настолько «отлично» продвигается, что Шарпей просел в 3 раза по популярности:
www.tiobe.com/tiobe-index/cplusplus
Это исключительно ваша логика. Ms не один язык создала. И если бы они руководствовались вашей извращённой логикой, то они должны были бы сначала всё переписать на vb, потом на visual j++, потом на c#, потом на f#, потом на typescript…Я всегда за платформу говорил, Шарп — как наиболее яркий представитель. Язык значения не имеет, как уже писал. .net в продуктах Майкрософта используется минимально. Большая часть кода — плюсы.
C# отличный язык. Один из самых удобных, на которых мне доводилось писать. Какие именно его концепции вы считаете плохими?Мне сложно говорить, какие именно особенности .net Майкрософт считает плохими, раз его почти не использует. Возможно это скорость, возможно фактическое отсутствие кросс-платформенности до .net core. Возможно еще что-то.
бизнес не переписывает продукт просто для того, чтобы переписать на новую технологиюВсякое бывает, по собственному опыту. У меня софтверный бизнес уже почти 20 лет работает, довольно успешно.
нет универсальных языков программированияC/C++ вполне универсальны.
Она настолько «хорошо» продвигается, что Шарпей просел в 3 раза по популярности:Там график C++, а не C#, или что вы имели ввиду?
www.tiobe.com/tiobe-index/cplusplus
Xamarin, если что, не их продукт. Купили.
Даже то, что калькулятор написан не на шарпе…Не в калькуляторе дело. А в общем подходе. .net используется самими майками почти нигде. При том технология продвигается, как замена всего сущего
Раз уж вы говорите о платформе, а не о языке, странно производить ссылку на тиобе.
Да и вообще странно приводить ссылку на тиобе как аргумент того, что язык "плохой".
Кстати, как там себя плюсы и си в нём ведут?
Или вам уже указали, что за график с# вы выдали график плюсов.
Xamarin, unity, visual studio — этих продуктов вам мало? Мне честно лень искать что-то ещё
Ну а по поводу универсальности си и плюсов — vscode не на них написан. Отсюда вывод: плохой язык :)
Почему UWP используют, а .net нет? Причем почти нигде.Если претензия к этому калькулятору, то это .net приложение, о чём говорит точка входа не int main() / WinMain(), а класс App (ресурс app.xaml).
Всё равно калькулятор из семёрки лучше! =)
Если в Windows 10 экранная кнопка визуально меняется при вводе с клавиатуры, то это хорошо. И удивительно. Потому что в XP, Vista, 7, 8 — ничего подобного не было, а было последний раз в 98.
Сам проверить не могу, у меня Windows 10 LTSB и метро нет, а стандартный калькулятор от семерки.
Хорошо, что и в десятке (20 лет спустя!) его можно использовать.Это, кстати, мой личный предмет дикой зависти как юниксоида: WinAPI, при всех его недостатках, предоставляет достаточно богатый baseline (стандартную графику, работу со звуком и пр.) для создания в т.ч. весьма сложных программ, работающих хоть на WinNT 4.0, хоть на «десятке» (без перекомпиляции). Фрюниксы таким похвастаться, к сожалению, не могут. :-(
Хотя, в эту цифру они наверно еще xml и С# код посчитали
А на счет того, что JS делает автоматически — управление памятью, к примеру. Да в C++ есть поинтеры, позволяющие уменьшить количество мусора, но попробуйте написать 35000 строк идеально структурированого кода без автоматического сборщика мусора. В сравнении с той же программой на JS, тут неизбежно увеличится количество кода.
попробуйте написать 35000 строк идеально структурированого кода без автоматического сборщика мусораЕсли не считать за автоматическое управление памятью упомянутые Вами «умные» указатели, то занимаюсь этим на постоянной основе. Было бы нескромно называть свой код «идеально структурированным», но что уж точно не сильно влияет на его приближение к идеалу, так это отсутствие встроенного в язык сборщика мусора. Помимо C++, приходилось писать и на Java, и на JavaScript, и ни один из этих языков за счет наличия GC автоматически не приближал мой код к идеалу. Более того, в Java сильно не хватало так привычного по плюсам RAII, ведь ресурсы, которыми приходится управлять, не сводятся только к памяти.
но попробуйте написать 35000 строк идеально структурированого кода без автоматического сборщика мусора.У меня, например, проекты по миллиону строк достаточно стуктурированного кода без автоматического сборщика. Так даже удобнее.
С другой стороны, 35 тысяч строк — это в самом деле замного для калькулятора.
Что же тут удивительного?
Удивительно то, что если написать на C++ приложение калькулятора с аналогичным функционалом на чистом WinAPI, со всеми плюшками по валидации данных, поддержке разных языков и т.д., там все равно должно получиться этак на порядок меньше строк.
А чо там писать?
Алгоритм сортировочной станции, работающий по обратной польской записи.
Этого хватит для любого матиматического действия
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
void TraceLogger::LogInvalidInputPasted(wstring_view reason, wstring_view pastedExpression, ViewMode mode, int programmerNumberBase, int bitLengthType)
{
if (!GetTraceLoggingProviderEnabled()) return;
LoggingFields fields{};
fields.AddString(L"Mode", NavCategory::GetFriendlyName(mode)->Data());
fields.AddString(L"Reason", reason);
fields.AddString(L"PastedExpression", pastedExpression);
fields.AddString(L"ProgrammerNumberBase", GetProgrammerType(programmerNumberBase).c_str());
fields.AddString(L"BitLengthType", GetProgrammerType(bitLengthType).c_str());
LogTelemetryEvent(EVENT_NAME_INVALID_INPUT_PASTED, fields);
}
fields.AddString(L"PastedExpression", pastedExpression);
Т.е. если ты случаяно вставишь предыдущий скопированный текст в калькулятор (думая, что ты вставляешь скопированное число), то программа автоматически отправит этот текст в Майкрософт, здорово…
::LogInvalidInputPasted
), что автоматически выдаст ошибку, и вызовет данного логгера, который отправит телеметрию с этими 5 значениями (одно из которых «pastedExpression» — вставленное значение)void TraceLogger::LogTelemetryEvent(wstring_view eventName, LoggingFields fields) const
{
g_calculatorProvider.LogEvent(eventName, fields, LoggingLevel::Verbose, LoggingOptions(MICROSOFT_KEYWORD_TELEMETRY));
}
то можно удивить, что это все-лишь Event Tracing, но ведь это скучнее, чем Microsoft следит за всеми. Я думаю, что если покопаться, то окажется, что по умолчанию он вообще отключен и его нужно специально включать для отладки.
// Telemetry events. Uploaded to asimov.
/* вырезано */
#ifdef SEND_TELEMETRY
// c.f. WINEVENT_KEYWORD_RESERVED_63-56 0xFF00000000000000 // Bits 63-56 - channel keywords
// c.f. WINEVENT_KEYWORD_* 0x00FF000000000000 // Bits 55-48 - system-reserved keywords
constexpr int64_t MICROSOFT_KEYWORD_CRITICAL_DATA = 0x0000800000000000; // Bit 47
constexpr int64_t MICROSOFT_KEYWORD_MEASURES = 0x0000400000000000; // Bit 46
constexpr int64_t MICROSOFT_KEYWORD_TELEMETRY = 0x0000200000000000; // Bit 45
constexpr int64_t MICROSOFT_KEYWORD_RESERVED_44 = 0x0000100000000000; // Bit 44 (reserved for future assignment)
#else
// define all Keyword options as 0 when we do not want to upload app telemetry
constexpr int64_t MICROSOFT_KEYWORD_CRITICAL_DATA = 0;
constexpr int64_t MICROSOFT_KEYWORD_MEASURES = 0;
constexpr int64_t MICROSOFT_KEYWORD_TELEMETRY = 0;
constexpr int64_t MICROSOFT_KEYWORD_RESERVED_44 = 0;
#endif
Опция SEND_TELEMETRY включается для билдов для «production configuration to be released to the Store and the Windows image», т.е. как раз для релизов в официальном магазине и в дисках с windows.
// Telemetry events. Uploaded to asimov.
...
constexpr auto EVENT_NAME_INVALID_INPUT_PASTED = L"InvalidInputPasted";
Объявляем переменную:
wchar_t m_resolvedName[LOCALE_NAME_MAX_LENGTH];
Затем сравниваем ее значение со строкой:
if (m_resolvedName == L"en-US")
Microsoft — запредельный профессионализм сотрудников и традиционно высокое качество!
Студентам на начальном курсе C/C++ за такое двойки ставят, а для них норм!
В общем, хотелось бы понять, что конкретно вам не нравится. Вы думаете это опечатка (я про L перед строкой) или вас в принципе смущает корявый способ преобразования типа сей строки и использование «магической константы» «en-US»?
и на строковую константу, которая тоже массивА разве L, перед этой константой, никак не повлияет на способ передачи этого массива в оператор сравнения?
Впрочем, если ранее в коде не было перегрузки оператора "==" для массивов, тогда в любом случае будет выполнено сравнение с указателем…
перегружать оператор сравнения для типов вроде… массивов нельзя
Можно подробнее? Впервые об этом слышу.
Но тут как раз вот это объявление:
wchar_t m_resolvedName[LOCALE_NAME_MAX_LENGTH]
Внутри класса, поэтому внутри этого же класса может быть перегружен оператор сравнения для это типа. По вашей же ссылке в Restrictions нет ничего про "==".
Если хотя бы один аргумент — объект классаНо это не наш случай (
wchar_t m_resolvedName[100]
— не объект класса).В массив m_resolvedName кладется (видимо) название локали, после чего в функции GetEnglishValueFromLocalizedDigits проводится вышеуказанная проверка — если мы уже в американской локали, тогда конструируем строку как есть, иначе начинаем ковырять переданную строку.
Проблема, однако, в том, что само имя m_resolvedName — это не строка, а указатель. Сравнение указателя со строковым литералом, как мне подсказывает статический анализатор — unspecified behavior. Здесь правильно воспользоваться семейством функций *str(n)cmp.
В массив m_resolvedName кладется (видимо) название локалиЯ так понимаю, тут ещё веселее. Туда вообще ничего не кладётся, это тупо объявление массива длиной LOCALE_NAME_MAX_LENGTH.
Не логичнее было бы для этой цели строку использовать, и сравнивать потом уже эту строку со строкой, чтобы такой огород не городить?
Да, конечно, логичнее. Почему автор так не сделал и ни один из его инструментов разработки ему не подсказал — загадка.
Вообще, понятно, что имя локали лучше положить в переменную отдельного типа LocaleName, ведь мы не любую строку туда можем запихать — как минимум есть ограничения по длине, уверен много других. Но автор поленился — и вот.
А зачем вообще имя локали кладётся в массив? Не логичнее было бы для этой цели строку использоватьМассив из wchar_t — это и есть строка.
- Windows. Visual Studio 2010-2017 C, C++, C++/CLI, C++/CX (WinRT), C#
- Windows. IAR Embedded Workbench, C/C++ Compiler for ARM C, C++
- Windows/Linux. Keil µVision, DS-MDK, ARM Compiler 5/6 C, C++
- Windows/Linux. Texas Instruments Code Composer Studio, ARM Code Generation Tools C, C++
- Windows/Linux/macOS. GNU Arm Embedded Toolchain, Arm Embedded GCC compiler, C, C++
- Windows/Linux/macOS. Clang C, C++
- Linux/macOS. GCC C, C++
- Windows. MinGW C, C++
- Windows/Linux/macOS. Java
Слово "индиоты" не из ниоткуда появилось...
Калькулятор в простом режиме вычисляет последовательно. Поэтому и так
На научных калькуляторах порядок действий соблюдается, а иногда еще и скобки есть. На бухгалтерских — вряд ли соблюдается.
У меня русская 10-ка (уже 1809), но все «стандартные» проги винды на английском.
std::wstring m_resolvedName;
(строка 382 файла LocalizationSettings.h)Где именно вы нашли то, о чем рассказываете?
Revision: c85d7ec4549ff06a7b7dc08201c671336725fba8
Author: Michał Janiszewski <janisozaur@users.noreply.github.com>
Date: 09.03.2019 1:45:39
Message:
Compare locale strings, not their pointers (#183)
Change the stored locale type to wstring to make the comparison operator work.
----
Modified: src/CalcViewModel/Common/LocalizationSettings.h
- wchar_t m_resolvedName[LOCALE_NAME_MAX_LENGTH];
+ std::wstring m_resolvedName;
Они читают Хабр!
Ну так по ссылке же...
Без этого уже калькулятор никак не написать?
Наверное, на нем студенты практиковались.
Вообще-то нет
Расскажите, как бы вы написали калькулятор без Azure Pipelines например. Вручную бы собирали и в релиз добавляли?
Открытый кросс-платформенный speedcrunch умеет всё то же самое и даже больше, как-то обходясь без сбора телеметрии.
Вручную набрать быстрее, чем кликать по кнопочкам, особенно если для авто-дополнение для функций и констант работает.
тогда уже надо ставить Jupyter, который поддерживает разные ядра (языки)
А просто набрать в строке поиска Google? Например 2+2*2? Кстати — ответ 6.
Хоть старый добрый Numlock Calculator 3.2 и всплывает быстрее, но тут такая мощь…
Открытый кросс-платформенный SpeedCrunchДействительно, весьма фичастый и приятный калькулятор; странно, что вас заминусовали. Обновил FreeBSD'шный порт до мастера бхагавад-гиты.
Чтобы программист мог найти ошибку, он должен ее сначала воспроизвести. Копаться в 35к строках чужого кода сложно, намного проще запустить в отладчике.
Зря кто-то чуваку минус поставил, есть непонятные траблы с этим калькулятором. Например, Win 10 1809, после смены раскладки клавиатуры калькулятор перестаёт реагировать на нажатие Backspace. Но на нескольких других компах это не воспроизводится.
Впрочем, мельком взглянув на исходники, у меня уже пропало всякое желание в этом разбираться.
проявляется в несрабатывании кнопок калькулятора при клике на них мышкой. Клик быстрый. Визуально видно что кнопка нажимается, но на экране нет отклика (не появляется цифра)
Зачем писать калькулятор когда можно использовать Python или R? Там есть куда больше возможностей для вычисления чего угодно, даже тех формул которые ещё не существует.
Ну и потом, калькулятор, который был до Win10, просто удобный. Как вы на питоне переведете число из десятичной системы в шестнадцатиричную, а потом мышкой битики пощелкаете, чтобы увидеть как оно меняется? Один клик мышкой по биту позволяет изменить его состояние и увидеть как изменилось само число. Никакой python или R такой фичей не похвастается.
Если сотни лет, то умножать придется в столбик.
Windows калькулятор тоже графики строить умеет одной командой? А посчитать сумму серии?
Desmos прямо никто не использует вместо калькулятора? Wolfram Alpha? Symbolab?
Покликать мышкой по битикам не оправдание, этим мало кто вообще пользуется (только для понимания принципа бинарных чисел?)
Я просто пытаюсь объяснить что именно Windows калькулятор не умеет почти ничего, что возможно в вышеперечисленных продуктах.
Почему на хабре так Python не любят? Он мягкий и пушистый особенно для единоразовых вычислений. Также имеет историю и возможность сохранить формулы вычисления на потом, и сохранить все это в виде программы.
Я просто пытаюсь объяснить что именно Windows калькулятор не умеет почти ничего, что возможно в вышеперечисленных продуктах.
Так с этим никто не спорит. Ещё калькулятор Windows вам не защитит сеть от кибератак, не загрузит свежие фоточки в облако и не проведет анализ семантического ядра сайта.
Но зато он похож на обычный калькулятор. Вы можете набрать на клавиатуре, или даже мышкой, выражение и увидеть результат, ничего вообще не зная про командные строки, как скачивать и устанавливать Питона и т.д.
Это ведь важнее, чем возможность сохранять формулы вычисления на потом и т.д. (я без сарказма). Сложных навороченных агрегатов с побочной функцией «могу посчитать выражение» немало, и Питон не первый, и не последний из них. Калькулятор крут тем, что он простой и понятный всем (ну, по крайней мере, простой в тех инкарнациях, которые без телеметрии и 35000 строк счастья).
В старой утечке исходников Windows 2000 тоже был ещё старый калькулятор. Любопытно, что эти исходники лежат на гитхабе. Интересно, в курсе ли Микрософт?..
Компания открыла код для того, чтобы любой желающий мог ознакомиться с такими технологиями Microsoft как Fluent, Universal Windows Platform, Azure Pipelines и другими. Благодаря этому проекту разработчики могут больше узнать о том, как выполняется работа по созданию тех либо иных проектов в Microsoft.
Ещё один. Давайте за два часа. Напишете?
Ждем статью. За два часа аналог калькулятора винды :-)
xn--i1abbnckbmcl9fb.xn--p1ai/статьи/524913
ds-release.ru/borland-delphi-7/kalkulyator-na-delphi
ну и так далее:
yandex.ru/search/?text=delphi%20calculator&clid=2233627&lr=213
Немного намекаю на то, что может вы поторопились с оценкой в 1 час? Это нормально для разработчиков, мы всегда так делаем. Сейчас время подумать и оценку изменить :-)
А то бросаться выводами, не подумав, недостойно инженера. Вот сейчас например вы сделали вывод, что я не знаком с Delphi. Зачем? :-)
А вам я просто ответил, что если вам интересно как на Дельфи сделать калькулятор, то всё уже давно сделано 1000 раз, не надо ждать 1001 статьи на ту же тему. Вашего уровня знакомства с Дельфи я неимею чести знать.
Сделать на Дельфи калькулятор так же, как и везде: взять и написать :-)
Вопрос-то не в этом. Вопрос в том, что вы даёте совершенно нереалистичные оценки с умным видом. Зачем?
Вот сейчас вы написали про человеко-годы. На основании чего?
Вы понимаете разницу между написанием прототипа и законченным программным продуктом?
Сделать на Дельфи калькулятор так же, как и везде: взять и написать :-)
а как же кровавый энтерпрайз, аджайл, совещания? чем занять толпу менеджеров? :):):):):)
этот код был написан несколькими годами ранее сторонней компанией, и никто в Microsoft никогда не понимал, как он работает (ещё меньше до сих пор это понимают), и бóльшая часть кода была полностью без комментариев. Поэтому мы просто не могли понять, почему детектор столкновений не работает. Чёрт, мы даже не могли найти детектор столкновений!
Кстати я бы тоже посмотрел на код игрушек MS, пусть даже бы и только новых, последний сапер на UWP был неплох.
Программа написана на С++ и содержит более 35000 строк кода.
не слишком ли много?
В нём доблестные программисты вычисляли синус разложением в ряд, не приводя аргумент к небольшому диапазону.
Компания открыла код для того, чтобы любой желающий мог ознакомиться с такими технологиями Microsoft как Fluent, Universal Windows Platform, Azure Pipelines и другими. Благодаря этому проекту разработчики могут больше узнать о том, как выполняется работа по созданию тех либо иных проектов в Microsoft
Теперь понятно, почему встроенный калькулятор Windows 10 просит оценить себя в магазине приложений.
Подсчитаем баги в калькуляторе Windows (хабрапост).
Microsoft открыла код Калькулятора Windows