none
Расширение языковой среды .Net RRS feed

  • Общие обсуждения

  • Расширение языковой среды .Net.

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

     

    Совсем недавно пришлось писать одну программу на C++ "Native", так это ужас, в сравнении с .Net языками.

    Нашел решение через гугл, микс  (C++ "Native" + .Net), вроде уже лучше, но редактору кода в  C++ "Native" 

    не сравниться с редактором кода в  C# "Sharp". Тогда я подробней узнал про CIL "Common Intermediate Language" и

    .Net языки, оказывается они все условно говоря конвертируются CIL, записываются в несколько ином виде в заголовок

    скомпилированной сборки, этим я хочу сказать что неважно какой .Net язык, в сборке все одно и тоже, так почему такая

    большая разница между (C++ "Native" + .Net) и просто .Net, ведь (C++ "Native" + .Net) в итоге становится сборкой .Net.

    Так почему бы не расширить  .Net языки до уровня C++ "Native", конечно есть не большая разница по моему в коком-то

    загрузчике, но это создателям думаю не будет сложно добавить в остальные .Net языки, или как вариант в  C++ "Native"

    улучшить кодовый редактор на подобие как  C# "Sharp" (выравнивание кодо после закр. скобки и точки запят. и.т.д), в

    настройки добавить опцию для выбора символа после которого будет раскрываться список членов класса или экземпляра

    и.т.д.

     

    В общем прошу подумать над этим предложением создателям .Net языков, думаю эта идея понравится всем кому

    нравится .Net язык.

    16 декабря 2011 г. 5:20

Все ответы

  • Если вы сможете сделать такие же плюшки в неуправляемых языках, как и в управляемых, то вам при жизни поставят памятник!

    В управляемой среде на каждый тип имеется метаинформация, которой можно пользоваться, и делать подсказки, и прочие удобства. В нативной среде такой информации нет.

    В динамически-типизированных языках дело обстоит ещё хуже. Там даже информации о типе нет, поэтому среда разработки ещё меньше подсказок делает.

    В общем, читайте умные книги. Со временем поймёте, почему дело обстоит именно так.

    16 декабря 2011 г. 6:15
  • Если вы сможете сделать такие же плюшки в неуправляемых языках, как и в управляемых, то вам при жизни поставят памятник!

    В управляемой среде на каждый тип имеется метаинформация, которой можно пользоваться, и делать подсказки, и прочие удобства. В нативной среде такой информации нет.

    В динамически-типизированных языках дело обстоит ещё хуже. Там даже информации о типе нет, поэтому среда разработки ещё меньше подсказок делает.

    В общем, читайте умные книги. Со временем поймёте, почему дело обстоит именно так.

    Хорошо, так почему бы не расширить  .Net языки до уровня "C++ Native", как Вы говорите "В управляемой среде на каждый тип имеется метаинформация, которой можно пользоваться, и делать подсказки, и прочие удобства", тем более у разработчиков есть исходный код редакторов как "C++ "Native" так и .Net языков, тогда в чём проблема, можно сделать такие фитчи  как "C++ Native": глобальные методы, поля, свойства, макросы, инклуды, дефины и.т.д. и это всё можно было бы при компиляции поместить в автоматически создающийся класс <Module> как это делается в миксе (C++ "Native" + .Net), потом проект dll ( динамически-подключаемая библиотекас поддержкой DllMain (точка входа в динамически-подключаемую библиотеку) и многие фитчи "C++ Native". Раз уж их смогли реализовать в неуправляемых языках, так в управляемых языках будет намного проще. Были бы у меня исходники кодовых редакторов "Microsoft Visual Studio" думаю я со временем мог бы реализовать всё это.


    • Изменено PahanCS 16 декабря 2011 г. 13:58 Добавил пропущенный пробел
    16 декабря 2011 г. 12:47
  • > почему бы не расширить  .Net языки до уровня "C++ Native"

    Вас не понять: то говорите, что .NET лучше, то вдруг его нужно "расширять" до натива.


    > такие фитчи  как "C++ Native": глобальные методы, поля, свойства, макросы, инклуды, дефины и.т.д.

    Глобальные (функции и переменные) - зло!

    Что такое глобальные поля? К чему они должны относиться?

    Свойств в обычном C++ нет.

    Инклуды из c/c++ в управляемой среде не нужны.

    Макросы - смотря что вы имеете в виду. Часть их возможностей реализуют в .NET дженерики. А метапрограммирования в C# и VB.NET пока действительно нет. Впрочем, есть T4.

     

    > Были бы у меня исходники кодовых редакторов "Microsoft Visual Studio" думаю я со временем мог бы реализовать всё это.

    :D

     

    P.S. если действительно есть желание получить максимум мощи и гибкости языка, обратите внимание на язык Nemerle.

    16 декабря 2011 г. 14:03
  • Вас не понять: то говорите, что .NET лучше, то вдруг его нужно "расширять" до натива.

    А что тут непонятного, или в "C++ Native" добавить фитчи из "C# Sharp" как я уже писал вышеили же в "C# Sharp" добавить фитчи из "C++ Native" как я уже писал выше. Смысл, в объединении возможностей обоих сред программирования.

    К примеру возьмешься за  "C# Sharp" (Librarry Project), а там нет DllMain (точка входа в динамически-подключаемую библиотеку) по тому, что это только библиотека классов, но кодовый редактор удобный (выравнивание кодо после закр. скобки и точки запят. и.т.д).

    А возьмешься за  ("C++ Native" +.Net) , там кодовый редактор не удобный, а возможностей больше чем "C# Sharp" (глобальные методы, поля, свойства, макросы, инклуды, дефины и.т.д.).

    В общем хотя бы сделать в "C# Sharp" возможность писать dll ( динамически-подключаемая библиотекас поддержкой DllMain (точка входа в динамически-подключаемую библиотеку).

    О T4 я слышал немного, там сложнее чем в "C++ Native", но уже хорошо.

    Nemerle, об этом я не слышал надо посмотреть, спасибо за подсказки и ответы.


    16 декабря 2011 г. 14:49
  • Для улучшения редактирования кода C++ есть отличное дополнение для Visual Studio - Visual Assist X (официальный сайт), попробуйте на него взглянуть.

    Тему перевожу в обсуждения.


    Для связи [mail]
    21 декабря 2011 г. 9:44
  • Сразу не догадался, можно же сделать редактор C++ "Native" с помощью .Net языка, как уже писал Petalvik  "в управляемой среде на каждый тип имеется метаинформация, которой можно пользоваться, и делать подсказки, и прочие удобства", или же уже существующий редактор C++ "Native" расширить с помощью .Net , то есть сделать Mixed  (C++ "Native" + .Net), и использовать все удобства .Net для улучшения редактора.

    1 июня 2012 г. 12:26
  • Сразу не догадался, можно же сделать редактор C++ "Native" с помощью .Net языка, как уже писал Petalvik  "в управляемой среде на каждый тип имеется метаинформация, которой можно пользоваться, и делать подсказки, и прочие удобства", или же уже существующий редактор C++ "Native" расширить с помощью .Net , то есть сделать Mixed  (C++ "Native" + .Net), и использовать все удобства .Net для улучшения редактора.

    Не. Не выйдет.

    Когда мы создаём сборку (библиотеку) на управляемом языке, то в этой сборке хранится вся информация о типах этой сборки. А в библиотеке на неуправляемом языке такой информации нет и быть не может. Поэтому среде разработке просто неоткуда взять текст подсказок, среда разработки не может делать многие проверки, которые доступны для управляемых языков.

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

    Скажите, ваш код полностью задокументирован? Полагаю, нет. Ваш код полностью покрыт тестами? Наверняка нет. То-то и оно. И файлы с дополнительной информацией точно также будут скорее всего неполностью заполнены достоверной инфой.

    5 июня 2012 г. 19:34
  • Petalvik:

    - Не. Не выйдет.

    Хорошо.

    А как на счёт автоматического выравнивания кода после вставки символов ; } ) и.т.п., при переходе на новую строку вставка нужного кол-ва пробелов или табов, раскрытие списка членов класса после вставки определённого символа в настройках (за место :: -> .) , подсветка своих и не своих классов и типов,  и.т.п. фичи как в C# (всё это можно сделать опционально в настройках редактора кода C++), в общем такого рода улучшения с помощью Mixed или чисто на .Net как писал выше, или это всё можно реализовать без .Net ?


    • Изменено PahanCS 5 июня 2012 г. 22:22
    5 июня 2012 г. 22:15