Сбор денег на покупку бронежилетов для роты охраны 13 батальона территориальной обороны. Ушла четвертая посылка. На 16.07 собрано 219 700 грн.
×Закрыть

Weekly linkdump #180

Интересные ссылки за не неделю:

Ссылки по C++ от ducoze
Ссылки от Скакунова Александра из блога woork.blogspot.com:
Декілька скрінкастів про Python пропонує переглянути presidentua:
Ссылка от Александра Краковецкого:
Ссылка от Михаила Сорочана:

13 комментариев

Подписаться на комментарии Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

QDevelop — узко специальная тулза.

Как узкоспециализированность QDevelop может рассматриваться как аргумент в этом споре?

Я не совсем понимаю, что именно вы имеете ввиду под «примером, приведенным в начале статьи»

Открой статью на которую ты дал ссылку, и посмотри на первый же скриншот.

Линк про студию появился потому что она должна обрабатывать ошибки по всему фронту С++.

Там в комментах к статье автор дал перечень фич которые еще не поддерживаются. Ну и поскольку ты явно не делал сравнительного анализа по фичастости с конкурирующими продуктами, то наверное не можешь утверждать что

для мира С++ такая функциональность IDE — открытие

Более того, в статье как бы не написано как они реализовали обсуждаемую функциональность. Вполне возможно, они просто выдают на выход ошибки компилера.

Вы просто феерически уперты. Принципиально Вам ничего не должно мешать полететь в космос, но в реале вряд ли ты там когда нибудь побываешь. Такой ответ устраивает?)) Тем более, я сказал, что есть Visual Assist. Я не совсем понимаю, что именно вы имеете ввиду под «примером, приведенным в начале статьи», но QDevelop — узко специальная тулза. Я вроде нигде не говорил, что какие-то специфические моменты С++, тем более приминительно к одной библиотеке, нельзя реализовать. Линк про студию появился потому что она должна обрабатывать ошибки по всему фронту С++. Ну, а личные наезды оставьте себе.

Сборка в C# самоописываемая, т.е. она хранит в себе полный и недвусмысленный набор типов в виде мета-информации. Эта возможность поддерживается также на уровне платформы.NET, которая предоставляет множество facilities вроде reflection. Таким образом, компилятору, IDE и другим утилитам нет нужды делать какие-то вещи из разряда rocket science для реализации check as you type. От IDE требуется всего лишь прочитать мета-данные, связанные со сборкой и сопоставить их с тем, что пишет девелопер. Это фича языка и платформы.Хранение мета-информации не заложено стандартом языка. С++. DLL и EXE файлы, написанные на С++, не хранят в себе никакой мета-информации, за исключением таблицы экспорта, которая не является стандартизированной между компиляторами и которой вообще может не быть.

Бла бла бла. Тебя спросили, что принципиально мешает IDE хранить метаинформацию для С++ кода?

К тому же, как я уже говорил, в я зыке С++ очень часто встречаются конструкции, которые имеют разный смысл в различных контекстах. Добавьте сюда шаблоны, полная информация о которых становится известной только после компиляции всех точек, где они используются, в результате чего из одного типа получается целый набор. Также можно упомянуть PIMPL. Вам не достаточно видеть точку объявления типа, т.к. в другом месте в том же модуле имя типа может быть использовано совсем по-другому.

Никто не говорит о том что бы покрыть абсолютно все кейсы. Я спросил конкретно про пример приведенный в начале статьи. Что мешало его обработать еще лет 10 назад?

Таким образом, ни одна IDE не реализовывала до сих пор подобной функциональности для С++.

Не слишком ли много пафоса? Ты просмотрел все IDE? Мне время от времени приходится накидывать простенький код в QDevelop и эта абсолютно бесплатная и опен сорс IDE умеет подсвечивать ошибки в коде, в том числе она справляется с примером приведенным в начале статьи.

Если вам из этого объяснения все еще не понятно, почему для мира С++ такая функциональность IDE — открытие, я не знаю чем еще Вам помочь.

Особо радуют твои трагикомичные заключительные цитаты. Пеши еще!

: wallСборка в C# самоописываемая, т.е. она хранит в себе полный и недвусмысленный набор типов в виде мета-информации. Эта возможность поддерживается также на уровне платформы.NET, которая предоставляет множество facilities вроде reflection. Таким образом, компилятору, IDE и другим утилитам нет нужды делать какие-то вещи из разряда rocket science для реализации check as you type. От IDE требуется всего лишь прочитать мета-данные, связанные со сборкой и сопоставить их с тем, что пишет девелопер. Это фича языка и платформы.Хранение мета-информации не заложено стандартом языка. С++. DLL и EXE файлы, написанные на С++, не хранят в себе никакой мета-информации, за исключением таблицы экспорта, которая не является стандартизированной между компиляторами и которой вообще может не быть. К тому же, как я уже говорил, в я зыке С++ очень часто встречаются конструкции, которые имеют разный смысл в различных контекстах. Добавьте сюда шаблоны, полная информация о которых становится известной только после компиляции всех точек, где они используются, в результате чего из одного типа получается целый набор. Также можно упомянуть PIMPL. Вам не достаточно видеть точку объявления типа, т.к. в другом месте в том же модуле имя типа может быть использовано совсем по-другому.Таким образом, ни одна IDE не реализовывала до сих пор подобной функциональности для С++. Обнаружение семантических ошибок в С++ усложняется в разы, по сравнению С# по все тем же причинам. Исключением является независимый продукт Visual Assist — платный Add-in для Visual Studio. Суть его работы — парсинг всех видимых исходников, построение внутренних таблиц и связей между ними. Далее, на основании собранных данных, эта утилита пытается подсказывать девелоперу места возможных ошибок. Но эффективность ее работы, хоть и очень высока, все таки далека от идеала — довольно много времени занимает пре-парсинг исходников, и зачастую она говорит об ошибке там где ее нет. Не известено на сколько корректно Visual Studio 10 будет выполнять данные функции, но есть надежда на лучшее.Если вам из этого объяснения все еще не понятно, почему для мира С++ такая функциональность IDE — открытие, я не знаю чем еще Вам помочь.

Это был иронический ответ на ваш «аргумент», что типа различия между C и C# мешают хранить метаинформацию. Какие конкретно различия мешали раньше обработать ситуацию, продемонстрированную в самом начале приведенной вами статьи?

Вы хотите пофилософствовать о том, что есть мало и что нет? Если вас интересует сама тема предлагаю вам почитать стандарты обоих языков и типичные их реализации.

С# и С++ имеют довольно мало общего между собой, за исключением схожего синтаксиса.

А мало это сколько? По вопросу согласен с Романом.

  1. С# и С++ имеют довольно мало общего между собой, за исключением схожего синтаксиса. 3. Фразу на счет отлова семантических ошибок я привел из блога, примеры действительно неудачные. Поиск в гугле действительно не дает пример, какие-именно ошибки будут подсвечиваться. Думаю стоит дождаться релиза.
  1. Не понятно, какое различие в языках C++ и C# мешает хранить для C++ ровно ту же метаинформацию, что и для C#? 3. В статически типизированных языках это ошибки синтаксические, не семантические. Их определяет (должен определять) компилятор во время компиляции.Примеры семантических ошибок: неожиданное вхождение в бесконечный цикл, попытка доступа к «чужому» (или несуществующему) адресному пространству, чтение неинициализированной переменной/памяти.

2 Роман: 1. Этой фразой я подразумевал фичи вроде «check as you type». Раньше это было не достижимой мечтой для С++ разработчиков, т.к. для проверки правильности кода необходимо было его компилировать. Возможно я выразился не совсем корректно2. Действительно, такое давно умеюют Java, C#, Python, etc. Однако надо понимать сложность языка С++, множество различных значений одной и той же конструкции в различных контекстах. При работе к примеру с C# практически вся информация доступна уже при редактировании кода во многом благодаря мета-информации, хранимой в сборках... В С++ ранее полная информация к примеру обо всех символах в проекте была доступна только после компиляции & линковки, ввиду отсутствия мета информации как таковой. Так что да, это действительно большое достижение3. Собственно пример есть в статье на первой картинке в самом начале стаьи — там ошибочно создается объект, без передачи параметров конструктору. Также примером может служить присвоение значения переменной, которая не была объявлена. В таком случае, операция будет подсвечена красным цветом.

«Intellisense в Visual Studio 2010 работает с плюсами подобно динамическим языкам» — у меня несколько вопросов на тему.1. Что значит «подобно динамическим языкам» в данном контексте? Если бы оно могло работать с питоном подобно статическим языкам, я бы понял это как комплимент (поскольку в статических языках гораздно больше возможностей для выявления ошибок).2. По поводу того, что оно выводит ошибки компиляции as you type — насколько я понимаю, это то, что какой-нибудь Eclipse с какой-нибудь Java умеет давно. Тут дело в том, что с C++ такое делать намного сложнее, или в чем? 3. Бегло просмотрел статью и так и не понял, какие семантические ошибки оно умеет определять. Пример можно?

Питоновские скринкасты — не идеал, но в целом весьма неплохо. Можно поработать над закадровым голосом (мб сценарий подготовить и какой-то телепромптер?)

Начал смотреть http://vimeo.com/5178598 — было интересно, технический скринкаст на украинском.Но оказалось просто жуть. Автор очень много “эээээ” -кает и “ааааааа” -кает. Но это ладно. Говорит на суржике: -DА после “проведемо оптимізацію, згідно з якою зменшимо швидкість виконання в пять раз” (причем два раза повторил), я решил дальше не смотреть.

Подписаться на комментарии

Ctrl+Enter