Блог

Компиляция Objective-C в Visual Studio

Уже шли слухи о том, что Microsoft может добавить возможность запускать приложения iOS на Windows. Пока что слухи не оправдались, но не уверен, что реальность лучше. Теперь приложения на Objective-C можно компилировать под Windows. Как вам эта новость? 

Майкрософт добавила так же возможность максимально использовать Java и C++ код написанный для Андроида. Таким образом, компания просто убивает необходимость писать код на C++ или .NET специально для Windows, на много выгоднее писать для Андроида или iOS, а потом перекомпилировать код под MS. 

В принципе, можно было бы использовать Delphi или что-то подобное, но я сторонник использовать родные инструменты. А из-за того, что у Windows Phone пока популярность слишком никакая, то специально из-за такого низкого рынка писать код особо желания нет.

Парное программирование

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

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

Преимущество такого подхода:

Новые возможности C# 6

Не могу говорить со 100% уверенностью, но мне кажется, что Microsoft реально пыталась создать в лице .NET слишком максимально похожим на С, чтобы его проще было учить. Но при этом они сделали большую ошибку - создавали новый язык на старых шпалах. Попытка максимально взять из C++ привела к тому, что в язык было введено много устаревших конструкций. 

В C# 6 разработчики явно решили освежить язык и если честно, то многие новинки очень сильно напоминают новый язык Swift от Apple. Возможно не Apple придумала эти вещи, но просто я знаю Swift и сейчас часто использую, поэтому и бросается в глаза схожесть. 

Короче, в Swift можно писать имена переменных прямо в строке "Это значение переменной \(param)". Вот в такие круглые скобки, где перед первой скобкой стоит слэш, можно писать переменные. Это удобнее, чем указывать номера в фигурных скобках, как это делается в C или C#. Как я понял, начиная с C# 6 в фигурных скобках можно будет писать имена переменных. Больше не нужно высчитывать номера и расставлять переменные в нужно порядке, просто пишем их прямо в строке.

Оптимизация с помощью final

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

Сегодня на блоге Apple для разработчиков появилась хорошая заметка на подобную тему. Сама Apple явно сторонних открытого подхода и у них все по умолчанию открыто для переопределения и это как раз явно становится для них проблемой в производительности и пришлось даже написать пост. 

Смотрим на следующий пример:

Apple не думает о совместимости

Вышел новый XCode 6.3 и у меня снова не компилируется мой код. Apple внесла изменения в новый язык Swift, которые не совместимы с предыдущими версиями и приходится подправлять везде мелкие изменения. 

С одной стороны, это немного достает, что приходится обновлять исходный код под каждый чих разработчиков Swift, но с другой я понимаю, зачем это делается. Разработчики языка не могли предусмотреть всего. Язык новый и конечно же сейчас выплывают недочеты дизайна. И чтобы не ставить костыли к новому языку, его просто меняют. Да, теряется обратная совместимость, но зато язык остается чистым. 

В последнем XCode в основном поновому приходится приводить as опциональные переменные. Раньше это приходилось делать как param! as something, теперь походу param as! something. Второе выглядит получше и даже смысл немного более правильный. 

У приложений ASP.NET 5 Core нет bin директории

Сегодня прочитал, что у приложений на ASP.NET Core (это та версия, которая будет работать на всех ОС и за корой будущее) не будет bin директории и программы н будут компилироваться. Вы всё же сможете создать бинарный файл и публиковать его, но по умолчанию этого не нужно. 

Сейчас у Web Forms исходные файлы за aspx представлениями не обязательно компилировать. Можно вносить изменения и IIS запустит компиляцию налету. В случае с MVC контроллеры лежат в отдельной директории и их всё же приходится компилировать и это серьезная проблема для сайтов с большой нагрузкой.

Если у ASP.NET 5 Core не будет скомпилированного файла, значит исходники вынуждены будут компилироваться налету. 

Чем отличается JavaScript от Java?

Хороший ответ сегодня нашел на stakoverflow. Судя по постам это сообщение очень старое, но я на этом сайте просто бываю очень редко. Попробую перевести не дословно, а именно сохраняя смысл:

Один в своей основе является игрушкой, созданный для создания небольших кусков кода и традиционно используется и злоупотребляется не опытными программистами. 

Что лучше - virtual или final по умолчанию

Такие языки как Java (как я понял Ruby on Rails тоже сюда относится) делают все методы по умолчанию виртуальными. Это значит, что любой наследник может переопределить любой метод, если явно не написано ключевое слово final. В C# наоборот, все методы по умолчанию final и если ты хочешь переопределение, то должен явно указать у предка слово virtual. 

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

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

Swift в режиме REPL

У нового языка Swift появилась возможность исполнять команды в режиме REPL. Достаточно запустить командную строку и выполнить команду swift, как появляется специализированная командная строка, в которой можно писать код Swift. Стоит только ввести строку кода, нажать Enter, и тут же можно увидеть результат работы строки.

Response Cookie автоматически создает плюшки

У меня в одном из мест в коде может быть создана плюшка. Если плюшка существует, то запросы должны перенаправляться на определенную страницу. При этом код создания плюшки находится в одном месте, а проверки в другом. 

Так вот, один программист написал код, который добавляет новую Cookie в Response.Cookie, а в другом месте проверяет, если Response.Cookie существует, то читает значение и перенаправляет пользователя. 

И тут начинается немного конфузия в коде. Дело в том, что если Response.Cookie["Здесь имя"] не существует, то она будет создана автоматически с пустым значением. Если честно, не понял, зачем это сделано, но это значит, что лучше не трогать таким образом объект, иначе он создаст лишних плюшек. 

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне