Мы рады представить январский релиз 2020 расширения Python для Visual Studio Code. Вы можете скачать расширение из маркетплейса, или установить его напрямую из галереи расширений в Visual Studio Code. Если расширение Python у вас уже установлено, вы можете получить последнее обновление перезапустив Visual Studio Code. Подробности о поддержке Python в Visual Studio Code вы можете прочитать в документации.
Рубрика «Программирование» - 202
Python в Visual Studio Code – январский релиз 2020
2020-01-15 в 7:00, admin, рубрики: microsoft, python, Visual Studio, visual studio code, Блог компании Microsoft, ПрограммированиеКого вы пытаетесь впечатлить своими дедлайнами?
2020-01-15 в 3:40, admin, рубрики: agile, deadline, deadlines, дедлайны, Программирование, спринты, сроки, управление проектами, управление разработкойПодсказка: явно не ваших пользователей.
Поднимите руку те, чья компания провозгласила «Клиентоориентированность» как одну из своих корпоративных ценностей. Для тех из вас, кто читает этот текст на Хабре и не видит аудиторию: почти весь зал поднял руку, кроме пары человек сзади.
Они работают в Oracle.
Удовлетворенность клиентов является одной из корпоративных ценностей компании Oracle. Но корпоративные ценности — они как абонемент в спортзал — недостаточно их просто иметь.
Одержимость клиентами — полезная вещь, но есть ещё одна вещь, которой одержимы многие компании — это сроки. Дедлайны — это хорошо. «Будет готово, когда я закончу» может быть отличной (или даже рекомендованной) стратегией для двух человек работающих над одним приложением. Но когда вы работаете в компании с более чем двумя сотнями сотрудников, вам требуется некоторое понимание того, что происходит; примерное представление о том, когда ваши пользователи смогут использовать ваши новые свистелки и перделки.
Смею утверждать, что жестко установленные сроки — это плохие сроки, и если у вашей компании такие есть, возможно следует пойти еще дальше, и убрать пункт об «клиентоориентированности» из списка корпоративных ценностей. Потому что, хотите верьте, хотите нет, пользователям плевать на заваленные спринты.
Дедлайны нужны в первую очередь не клиентам, а менеджменту.Читать полностью »
Ох уж этот медленный C-C++
2020-01-14 в 19:14, admin, рубрики: C, c++, Алгоритмы, высокая производительность, оптимизация кода, ПрограммированиеЭто небольшое подведение итогов на пост “Быстрее, чем C++; медленнее, чем PHP”
Неблагодарное дело — «спорить» в комментариях, поэтому формулирую несколько мыслей в отдельный пост. Автор утверждал тут, тут, и еще много где, что у него большой стаж и богатый опыт в программировании на С++.
Читать полностью »
Публикация кода VVVVVV показала, насколько грубо устроены игры внутри
2020-01-14 в 13:51, admin, рубрики: геймдев, грязные хаки, инди-разработка, костыли и велосипеды, открытый исходный код, Программирование, разработка игр, Совершенный код
На прошлой неделе создатель Dicey Dungeons Терри Кавана отпраздновал десятую годовщину своей давней игры VVVVVV, by опубликовав её исходный код [перевод на Хабре]. Если объяснять просто, то это значит, что любой человек может теперь посмотреть, как создавалась игра, потому что каждую строку кода можно внимательно изучить.
Такое нечасто случается и поэтому ценность публикации этой информации очень велика. Люди могут учиться по ней или улучшать код. Некоторые отзывы на исходный код VVVVVV были ужасными — исследователи увидели вещи, которые можно было написать лучше. Возможно, Кавана предвидел это — в своём посте, где он объявил о публикации кода, Терри признаёт, что «технически игра VVVVVV не очень хорошо продумана! Даже по стандартам инди-разработчиков-самоучек, код довольно хаотичен».
Существует заблуждение, что написание кода само по себе является изящным и продуманным, ведь в конечном итоге, это своего рода написание логики, не так ли? Не зря ведь это называется компьютерными НАУКАМИ? Но в реальности всё гораздо сложнее. Очень часто истории разработки видеоигр показывают, что поскольку в играх есть так много элементов, от геймдизайна до звука, что часто собираются в единое целое только в последний момент, если вообще когда-нибудь собираются.
Читать полностью »
Как и зачем делать очередь на двух стеках
2020-01-14 в 13:50, admin, рубрики: Алгоритмы, интервью, Программирование, структуры данныхПривет!
Данный пост написан для новичков в олимпиадном программировании и начинающих разработчиков, готовящихся к прохождению алгоритмических интервью. В конце бонусная задачка. Если заинтересовал, прошу под кат :)
Читать полностью »
Быстрее, чем C++; медленнее, чем PHP
2020-01-14 в 12:57, admin, рубрики: haskell, бенчмарки слооожна, бессмысленные бенчмарки, Программирование, функциональное программированиеПривет.
У меня тут случайно код на хаскеле получился быстрее аналогичного кода на C++. Иногда — на 40%.

(время работы, меньше — лучше, C++ снизу)
Что самое смешное — я собирал хаскель-код через LLVM-бекенд, но при этом сравнивал с GCC. Если сравнивать с clang (что вроде как логичнее), то всё становится ещё хуже для плюсов: почему-то на этой задаче clang проигрывает GCC в пару раз, и разница становится не 40%, а этак раза три. Впрочем, одна маленькая модификация C++-кода это поменяет.
Началось всё с того, что для одного моего проекта (который, естественно, делается на хаскеле, и о котором я тоже скоро напишу) нужно было быстро и эффективно считать расстояние Левенштейна между двумя строками. Расстояние Левенштейна — это такая метрика, которая говорит, сколько символов нужно удалить, добавить или заменить в одной строке, чтобы она стала равна другой строке. Я считал расстояния между довольно большими строками (масштаба десятков тысяч символов), поэтому эффективность была действительно важна.
А потом мне стало интересно, насколько быстро я вообще могу это расстояние считать (потратив разумное время на оптимизацию, конечно), так что я набросал вариант на С++ и взял его время работы за этакий идеал, к которому стоит стремиться. Впрочем, как уже понятно, идеал оказался превзойдён.
Посмотрим, как этого можно достичь?

В качестве бонуса — сравнение с некоторыми другими языками. Спойлеры:
- Nim медленнее компилятора C двадцатилетней давности.
- C# в пять раз медленнее Java, которая оказывается вполне на уровне Rust.
- Go вровень с C.
- PHP быстрее питона (что оправдывает вторую часть заголовка).
Запускаем однофайловые программы в Java 11 без компилирования
2020-01-14 в 10:19, admin, рубрики: java, Блог компании NIX, исходный код, однофайловая программа, Программирование
Пусть исходный файл HelloUniverse.java содержит определение класса и статичный метод main, который выводит в терминал одну строку текста:
public class HelloUniverse{
public static void main(String[] args) {
System.out.println("Hello InfoQ Universe");
}
}
Обычно для запуска этого класса требуется сначала скомпилировать его с помощью Java-компилятора (javac), который создаст файл HelloUniverse.class:
mohamed_taman$ javac HelloUniverse.java
Затем нужно с помощью команды виртуальной машины Java (интерпретатора) запустить получившийся файл:
mohamed_taman$ java HelloUniverse
Hello InfoQ Universe
Тогда сначала запустится виртуалка, которая загрузит класс и исполнит код.
А если вам нужно быстро проверить фрагмент кода? Или вы новичок в Java (в данном случае это ключевой момент) и хотите поэкспериментировать с языком? Описанные два этапа могут всё усложнить.
В Java SE 11 можно напрямую запускать одиночные исходные файлы без промежуточной компиляции.
Читать полностью »
Чем программирование сегодня отличается от программирования 20 лет назад?
2020-01-14 в 7:53, admin, рубрики: 20 лет назад, IT-стандарты, Программирование, Разработка веб-сайтов, разработка мобильных приложений
Я увидел этот вопрос на Quora и начал писать ответ. Но ответ получился слишком большим, так что я превратил его в эту статью.
Вот часть изменений в случайном порядке, которые я заметил в программировании за последние 20 лет:
Особенности профилирования программ на C++
2020-01-14 в 6:44, admin, рубрики: c++, callgrind, google perftools, heapdump, tcmalloc, valgrind, высокая производительность, никто не читает теги, но некоторые по ним ищут, Программирование, профилирование, профилирование памяти, профилирование производительности, Серверная оптимизация
Временами бывает нужно отпрофилировать производительность программы или потребление памяти в программе на C++. К сожалению, зачастую это сделать не так просто как может показаться.
Здесь будут рассмотрены особенности профилирования программ с использованием инструментов valgrind и google perftools. Материал получился не очень структурированным, это скорее попытка собрать базу знаний «для личных целей», чтобы в будущем не приходилось судорожно вспоминать, «а почему не работает то» или «а как сделать это». Скорее всего, здесь будут затронуты далеко не все неочевидные случаи, если вам есть что добавить, пишите пожалуйста в комментарии.
Все примеры будут запускаться в системе linux. Читать полностью »
Гибридные сортировки
2020-01-13 в 13:26, admin, рубрики: edisonsoftware, Алгоритмы, Блог компании Edison, визуализация данных, Программирование, Совершенный код, сортировкиКак все уже знают, в основу сортировки могут быть положены обмены, вставки, выбор, слияние и распределение.
Но если в алгоритме комбинируются разные методы, то тогда он относится к классу гибридных сортировок.Читать полностью »


