newobjx
20 subscribers
52 photos
1 video
17 links
Timofey Usov
tmusov@ya.ru
newobj.ru
Download Telegram
🛠 Пятничный C# 0x3120A

Описание оператора new в документации:
The new operator creates a new instance of a type.

Соответствующая инструкция IL newobj:
Create a new object or a new instance of a value type, pushing an object reference (type 0) onto the evaluation stack.

Вопрос: всегда ли использование оператора new приводит к вызову newobj и созданию нового экземпляра? (Подсказка: нет.)
Технология XXI века
🦕 Минутка футурологии

Вероятно, главной технологией XXI века будет не искусственный интеллект.

Нобелевскую премию по химии в 2020 году получили ученые Эммануэль Шарпантье (Германия) и Дженнифер Дудна (США) за открытие технологии редактирования генома CRISPR/Cas9.

https://www.nobelprize.org/prizes/chemistry/2020/press-release/
7 октября 2020
«За разработку метода редактирования генома.»
Генетические ножницы: инструмент перезаписи кода жизни.
Эммануэль Шарпантье и Дженнифер А. Дудна открыли один из самых точных инструментов генных технологий: генетические ножницы CRISPR/Cas9. Используя их, исследователи могут изменять ДНК животных, растений и микроорганизмов с чрезвычайно высокой точностью. Эта технология оказала революционное влияние на естественные науки, вносит вклад в новые методы лечения рака и может сделать мечту об излечении наследственных заболеваний реальностью.

Впервые эта технология была использована как инструмент редактирования ДНК в 2012 году. Примечательно, что в процитированном тексте нобелевского комитета в перечислении объектов редактирования не упоминается человек. При этом в том же абзаце перспективным направлением применения названо излечение наследственных заболеваний (человека). Для полной картины, о рисках, из интервью Дженнифер Дудны журналу The Guardian 2017 г.:
- In your book you describe a nightmare you had involving Hitler wearing a pig mask, asking to learn more about your “amazing technology”. Do you still have anxiety dreams about where Crispr might leave the human race?
- I had the Hitler dream and I’ve had a couple of other very scary dreams, almost like nightmares, which is quite unusual for an adult. Not so much lately, but in the first couple of years after I published my work, the field was moving so fast. I had this incredible feeling that the science was getting out way ahead of any considerations about ethics, societal implications and whether we should be worrying about random people in various parts of the world using this for nefarious purposes.

2020-й год как никакой другой подходит, чтобы отметить именно это открытие. 🦕
«Symptoms of complexity»
Цитата из книги

Симптомы сложности

Усиление изменений (change amplification): Первый симптом сложности – кажущееся простым изменение требует модификации кода во многих различных местах.

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

Неизвестные неизвестные (unknown unknowns): Третий симптом сложности – когда неочевидно, какие части кода должны быть модифицированы или какую информацию разработчик должен иметь, чтобы успешно выполнить задачу. Неизвестное неизвестное значит, что есть что-то, что вам необходимо знать, но у вас нет способа понять, что это, или даже есть ли здесь проблема. Вы не можете узнать об этом, пока обнаружится баг после того, как вы внесете изменения.

Ousterhout, John. A Philosophy of Software Design. 2019.
🛠 Пятничный C# 0x334B5

Первоянварский тест: Почему на скриншоте исключение? Ведь выше по коду есть проверка.
(Нет, индекс не отрицательный.)
Что почитать
Larman, Craig. Agile and iterative development: a manager’s guide. 2004.

> Книга об итеративной разработке. Итеративность рассматривается преимущественно с точки зрения технических, а не организационных предпосылок. В этом плане хорошо дополняет современную литературу, сосредоточенную на командной и личной мотивации и эффективности.
> К. Ларман – автор известной классической книги «Введение в объектно-ориентированный анализ, проектирование и унифицированный процесс».
> Называется «A Manager’s Guide», но по содержанию в большей мере для разработчиков. При этом много внимания уделено тому, как убедить менеджера использовать итеративный процесс (книга 2004-го года).
> Во второй части обзорно и в сравнении друг с другом рассматриваются несколько методов: Scrum, Extreme Programming, Unified Process, Evo.
> Приводятся занимательные результаты многих исследований по успешности (очень скромной) внедрения айти-проектов.
> К сожалению, нет изданий на русском.
newobjx
Что почитать Larman, Craig. Agile and iterative development: a manager’s guide. 2004. > Книга об итеративной разработке. Итеративность рассматривается преимущественно с точки зрения технических, а не организационных предпосылок. В этом плане хорошо дополняет…
Table of Contents

Introduction
Software Is New Product Development
What’s Next?
Web Resources
Iterative & Evolutionary
Iterative Development
Risk-Driven and Client-Driven Iterative Planning
Timeboxed Iterative Development
During the Iteration, No Changes from External Stakeholders
Evolutionary and Adaptive Development
Evolutionary Requirements Analysis
Early "Top Ten" High-Level Requirements and Skillful Analysis
Evolutionary and Adaptive Planning
Incremental Delivery
Evolutionary Delivery
The Most Common Mistake?
Specific Iterative & Evolutionary Methods
What’s Next?
Recommended Readings
Agile
Agile Development
Classification of Methods
The Agile Manifesto and Principles
Agile Project Management
Embrace Communication and Feedback
Programming As If People Mattered
Simple Practices and Project Tools
Empirical vs. Defined & Prescriptive Process
Principle-Based versus Rule-Based
Sustainable Discipline: The Human Touch
Team as a Complex Adaptive System
Agile Hype?
Specific Agile Methods
What’s Next?
Recommended Readings
Story
Motivation
Evidence
Scrum
Extreme Programming
Unified Process
Evo
Practice Tips
Frequently Asked Questions
«Смешанная реальность, искусственный интеллект и квантовые вычисления»
Цитата из книги

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

Наделла, С. Обновить страницу. О трансформации Microsoft и технологиях будущего от первого лица. 2018.

Сатья Наделла – генеральный директор Microsoft с 2014 года.
Пятничный C# 0x334BF

class MyStopwatch
{
private DateTime start;
public void Start()
{
start = DateTime.Now;
}
public TimeSpan GetElapsed()
{
return DateTime.Now - start;
}
}
// ...
var myStopwatch = new MyStopwatch();
myStopwatch.Start();
// ... спустя 5 минут ...
TimeSpan elapsed = myStopwatch.GetElapsed();

Вопрос: возможна ли ситуация, когда elapsed будет больше часа? (Подсказка: да.)
Шутка про цифровизацию 🙁
«Microsoft отказалась использовать исключения в API Win32 и COM по ряду причин»
Цитата из книги

Обработка исключений – замечательный инструмент, облегчающий исполнение рутинных задач разработчика. Но при неверном использовании она способна разочаровать и измучить программиста, маскируя серьезные ошибки в программе или сигнализируя о ложных неполадках.
Microsoft отказалась использовать исключения в API Win32 и COM по ряду причин.
• Большинство разработчиков не знакомо с обработкой исключений.
• Большинство языков программирования, включая C и ранние версии C++, не поддерживают исключения.
• Некоторые разработчики считают, что разбираться в исключениях слишком сложно, не говоря уже об их применении. ... выгода от этого с лихвой перевешивает неудобства от необходимости их изучения.
• Обработка исключений снижает быстродействие приложения. ... и в этом случае выгода от использования исключений перевешивает неудобство, доставляемое незначительным периодическим снижением быстродействия.

Richter, Jeffrey. Applied Microsoft .NET Framework Programming. 3rd ed. 2002.

2002-й.
Код-гольф
Субботнее программирование

Как написать программу, решающую некоторую задачу на некотором языке программирования, используя минимальное число символов исходного кода?

Попробовать свои силы: Code Golf.

Ссылки: вики, code golf stack exchange.
🛠 Пятничный C# 0x3351B

На скриншоте метод M был вызван из метода Main, соответственно, в стеке вызовов метод Main отображается как предыдущий. Всё очевидно.

Вопрос: в каких случаях в стеке вызовов предыдущий метод не будет методом, из которого было передано управление в текущий по коду?