Pull to refresh
23
0
Виктор Лова @nsinreal

Пользователь

Send message
Увы, это требует поддержку от IDE. Я не уверен, но скорее всего можно написать костыль с ограниченной функциональностью, который будет реализовывать часть фич из 2015-й студии (а именно — выдергивание провайдеров рефакторингов, передача им проанализированного документа, применение изменений, ну и естественно нужно как-то получить проанализированный документ). В мои цели это не входит. Я жду релиза VS 2015, C# 6 и asp vnext. До этого я работаю на превью VS 2015.
Хотя вспомнил, Roslyn появлялся еще как CTP для 2010-й студии; причем уже тогда были шаблоны проектов Code Refactorings. Думаю если порыскать по интернету, то можно найти инструкции как завести Roslyn в 2012/2013-студии. Но искать скорее всего придется долго + API наверное будет отличаться.
Да, верно, раньше там был Чуточку другой код, поэтому OfType использовать было нельзя
Нет, все зависит от количества изменений. Под изменением подразумевается замена, добавление, удаление. В roslyn проделали большую работу, они поддерживают два персистентных неизменяемых дерева (красное и зеленое). В результате любая операция с нодами не приводит к большому оверхеду. Чуточку можно почитать здесь: blogs.msdn.com/b/ericlippert/archive/2012/06/08/persistence-facades-and-roslyn-s-red-green-trees.aspx. Суммируя: не бойтесь, но делайте профайлинг вашего кода. На скорость работы отрисовки в студии — забейте. Рефакторинги применяются только если юзер пожелает (для этого и есть асинхронные CodeAction), и отрисовываются уж точно только если юзер пожелает
Даются от рождения. В качестве кратковременной замены можно использовать успокоительное по предварительной консультации с врачом.
Если у вас есть пожелания к изложению материала или вы желаете узнать поподробнее про какие-нибудь аспекты, то пишите, буду рад предложениям.
Вы не понимаете сути синхроности/асинхронности.
Синхронный код приведет к тому, что запустят первую ракету, она упадет, запустят вторую ракету, она упадет, запустят третью ракету (т.е. по очереди запускаем и блочим исполнение пока не завершится полет ракеты)
Асинхронный код приведет к тому, что запустят все ракеты и они упадут фиг знает когда, но при равном времени полета примерно в одинаковое время
1. Меня задолбала over-all сложность программирования и криворукость макак-программистов. Здесь тупо не в IDE дело. JS только приносит хаос, он не дает ничего хорошего.

2. Ты по прежнему настаиваешь на том, что устанавливать софт для программирования — это большая сложность. Я с тобой не согласен. Блин, есть же куча языков заточенные под создание просто игр. Типа love2d. Почему canvas лучше?

3. Ты сам смотришь со своей колокольни и думаешь, что lisp сложен. Нет, он не сложен, он другой. Он не для умных, он для тупых и ленивых. Просто ты привык к C-подобным языкам, вот тебе его синтаксис и выносит мозг.

4. Ты подменяешь понятия. Я не концентрируюсь на том, что js плох для серьезных проектов. Цитата: «Я говорю, что javascript плох для всего, кроме console.log(«hello world»)»

5. В C# dynamic конечно не дефолтный тип, но можно пользоваться им. Правда автокомплит отваливается. Мне лично автокомплит очень сильно помог в изучении стандартной библиотеки.

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

Не просто так тут многие ссылаются на свой опыт
Ок, давай я расскажу про свой опыт. Первый язык Basic, на котором я освоил Hello World и сложение двух чисел. Потом Pascal — алгоритмика. Потом VB6 — GUI и VB for Applications — просто написал полезное расширение для моего отца. Потом C/C++ — опять же алгоритмика и чисто для себя. Потом C#, нынче это мой основной язык программирования, и это тот язык, который я знаю лучше всего (т.е. остальные я действительно плохо знаю). Между делом изучал Lisp и его вариации, его и выбрал в опросе. Знаком с синтаксисом и умеею написать бложек на PHP, Java, Ruby. Это я письками меряюсь, да. Ой, забыл, еще SQL знаю (причем хорошо).

Ну короче, я считаю что привязанность к синтаксису языка это плохо.

Потому что это можно делать потом, когда мотивация уже есть
Я лично боюсь, что первый язык в виде Javascript может отбить желание программировать. Ну или сделает из человека недопрограммиста-скриптовика.
Но замотивировать можно и другими языками. Достаточно написать хороший адекватный туториал. :-)

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

как изучить монстра WPF
Ну да, а как изучить jQuery, angularJs, ember-js, react.js и прочую муть — этот вопрос не поднимается. Ведь там все интуитивно понятно.

Где там обучение собственно сути программирования, а не технологиям, которые меняются по 10 раз в год?
Хм. WPF — 9 лет. Но это ладно. Ты хочешь сказать, что в вебе стабильность и ничего не меняется? Не выходит новых фич в браузерах, эти фичи не появляются в спеках; не выходит новых библиотек; и даже текущие библиотеки не апдейтятся?

Нет, я не так формулирую мысли. Давай начнем с концептов программирования. Императивное, функциональное, процедурное, ооп, асинхронное, event-driven, reactive, и прочая муть. Для демонстрации этих концептов есть языки гораздо лучше Javascript.
Большая часть работы программиста сводится к тому, что он использует чей-то код; просто заставляет кирпичики складываться в функционал. Ты от этого никак не избавишься. Ты можешь радоваться, что на html+javascript можно создать «hello world», который будет летать по кругу, но потом…

Потом начнется ад. Ты захочешь чтобы все выглядело красиво. HTML/CSS не дадут тебе счастья, они принесут тебе боль и кровавый понос. Ты посмотришь на свой код и возможно поймешь, что он говно. Или может быть просто поймешь, что кто-то написал какую-то функциональность до тебя и захочешь заюзать его код, а не писать свой. И ты будешь просыпаться в холодном поту, разбираясь в недрах кривых библиотек, написанных макаками, которые изучали только JavaScript. А перед этим ты будешь долго и муторно выбирать какое художественное произведение javascript-макаки тебе нравится.

Но ладно, допустим ты суров, и хочешь написать все без библиотек. Скажи, что будет, когда ты не имеешь представления о том, как нужно организовать работу с DOM-деревом (правильная организация — не трогая DOM-дерево, если это возможно)?

В одной компании практикуют обучающие курсы; их учили бекендскому языку; но на финальный коммандый проект им пришлось писать и бек, и фронт. Ну в общем, как оказалось, javascript имеет свой порог входа, если ты хочешь написать на нем, что-то сложнее Hello World.

Ты правда надеешься, что от кучи говна связанного со сопутствующей сложностью программирования можно избавиться языком, на котором можно легко написать программу, которая выведет результат сложения 2+2?

Легкая сложность поначалу приводит к высокой сложности потом. Что в питоне для построения GUI ты будешь ебать чужую библиотеку, что на javascript ты будешь ебать ангуляр/ембер/реакт.

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

ты уже начинаешь другой холивар, является ли js нормальным языком для [вставьте нужное], это неинтересный холивар.
Нет. Я говорю, что javascript плох для всего, кроме console.log(«hello world»). Это действительно не интересный холивар, все и так понятно, разве нет?

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

Зато отладка родная для браузера
Sourcemaps

писать можно хоть в блокноте
Я тебе могу свой сапер на батниках показать — я его в блокноте писал. Охуенный аргумент чо, давайте все ебашить серьезный софт на батниках, в блокноте же писать можно. У меня еще тыща аргументов за батники найдутся. И устанавливать нихрена не нужно, даже браузерв — на свежекупленном ноутбуке у тебя будут все средства для написания батников.

А в это время Jetbrains пилит свою софтину MPS — IDE/язык с возможностью написания своих dsl; потому что написание кода без DSL слишком сложно. Знаешь сколько я наипался с тем, чтобы написать калькулятор, который умножает и складывает три числа? И фиг ты прочитаешь в блокноте исходный код, потому что они отошли от концепции «код=текст». И правильно сделали.

P.S: я задолбался это писать, и надеюсь что ты не устанешь это читать
почему бы и нет :)

Потому что бессмысленно. Давать человеку плохой язык, чтобы потом обрадовать его гораздо лучшим? С другой стороны, давать человеку Python, а потом Javascript — это хорошее решение, чтобы отбить желание связываться с вебом. Но вообще, изучать низкоуровненные языки полезно, потому что эти знания помогут написать более эффективный код. Изучать высокоуровненные языки полезно, потому что их концепты помогут писать более красивый и сопровождаемый код. Javascript ни то, ни другое.

есть flash, в котором в свою очередь нет ничего ниже ABC

Который требует поддержки браузером/плагином и не работает на iOS
в java — ниже байт-кода
в silverlight — CIL
еще ниже — плагины

И показывать пользователю плашку, мол вы ололо, у которого не установленная Java/Silverlight/Плагин? Или еще лучше: вы полное ололо, потому что купили кирпич, на который нельзя поставить спец. плагин, через который работает наш сайт? Или может сказать, что мы тут модные и используем NaCl, поэтому вы должны быть счастливым обладателем Chrome?

есть, например, Google Sheets, Google Mail, есть даже IDE и audio tools

Эмм… Вы это называете полнофункциональными приложениями? Даже моя бабушка имеет больше функций. Кроме того, на каждое приведенное вами приложение я могу назвать как минимум 2, или возможно десяток, или возможно сотню десктопных/планштеных/смартфонных приложений, которые это умеют.
Ой, мне кажется вы тут переходите на личности.

Давайте по пунктам.
Основное преимущество в том, что настроенная и мощная среда выполнения всегда под рукой и работает везде

Где-то я уже слышал. «Write once, run anywhere», «write once, debug everywhere», и естественно, всем знакомую шутку.
А потом начинается. А почему это у меня на IE8 не работает сайт? Ой, а почему это на мобильном мой сайт выглядит как говно и что-то вообще не работает? Хм, а как запустить это приложение без интернета? Кто жрет мой мобильный трафик? Кто отожрал всю оперативу? Ой, а почему у пользователя, который не обновлял год компьютер нету того, что можно с легкостью сделать на любом адекватном десктопном языке?

Возьми текущую living спеку с whatwg и посмотри, что можно делать с помощью современного html/css/javascript. Я её изучал, и с уверенностью говорю, что веб почти дорос до уровня десктопных приложений, но писать нормальное приложение на javascript — это бредовая идея.

Без протекающих абстракций «компиляции в Javascript»

А, т.е. то, что javascript это фигня, которая компилируется в хрен-знает-что, а потом это все доходит до уровня ассемблерного кода — это не протекающие абстракции. А вот когда мы юзаем мощный адекватный язык, который компилируется в javascript — так это очень плохо.

фанбоев MS типа тебя с WPF

Ты меня фанбоем назвал за то, что я упомянул в моем оригинальном комментарии C/C++/Java/C#? Или за то, что я назвал в качестве примера фреймворк, с которым я работал (и который я считаю адекватнее веба)?
подходит для обучения

Он не подходит для обучения. Для обучения лучше брать более адекватные языки и/или языки более похожие на то, с чем придется работать в будущем.

значит, это язык-платформа:).

Какой смысл изучать тогда javascript, почему бы не изучать один из них? Или лучше сначала лучше выучить Javascript, а потом тот, который построен поверх? Только тогда нивелируется аргумент о том, что на python плохо с UI (ведь можно тогда например взять C# с WPF).

Btw, это не язык-платформа. Столько языков компилируется в javascript, только потому что ниже javascriptа в вебе ничего нету. С этим же и связана низкая производительность веб-приложений и практически полное отсутствие полнофункциональных приложений в вебе.
P.S:

На erlange можно писать веб-сайты без единой строки Javascriptа (есть erlang -> javascript компилятор).
На F# можно писать веб-сайты без Javascriptа.
На C# можно писать веб-сайты без Javascriptа.

Только почему-то всем нравится черпать говно ложкой.
Я знаю, знаю, он причудливый и иногда просто странный, но в целом это нормальный и достаточно современный язык


Вы заблуждаетесь. Это не современный язык. Javascript это самый отстойный язык программирования за всю историю программирования. Он практически не развивается. Сколько лет вы будете ждать еще Ecmascript 6? Уже 5 лет прошло с Ecmascript 6, за это время были созданы куча языков, вышло куча новых версий языков тех же языков. Даже Java за три года умудрились выпустить новую версию хоть с каким-то набором новых фич, а это самые слоупоки.

Javascript изначально задумывался как скриптовый язык для маленьких целей. Его синтаксис упорот, все концепции в нем упороты. Есть over 50 языков, которые компилируется в JS. Людям с мозгами поручили писать код на JS, и их глаза истекали кровью. Есть Cofeescript, который ничего не привносит в JS, кроме нормального синтаксиса. Есть Typescript, который ничего не привносит в JS, кроме типизации. Есть еще куча языков, которые делают возможным нормальное программирование на фронтенде.

Если вы пишете на Javascript, то вы будете иметь дело с HTML/CSS, для которых все вышесказанное верно (создавались для одних целей, выросли в нечто другое, legacy не дает нормально писать приложения). Он не подходит для целей обучения.

О, и еще плюс — вы не сможете написать нормального приложения на Javascript. Он не предназначен для написания больших полноценных приложений. Там нету мультипоточности (но есть малоподдерживаемые костыли типа Background workers), там как-бы есть асинхронность (но она упоротая), там нету типизации, там нету возможности управления памятью. Вы не сможете написать быстрое приложение на javascript, потому что это интерпретируемый язык. И никакой V8 вам не поможет сравниться со скоростью C/C++/Java/C#. Т.е. смысла его изучать нету — ну кроме как создавать «приложения» типа очередного бложика.

И зачем этим пичкать людей? Для старта есть языки получше. Опять же, тот же python.
Date theDate = createDate(Year(currentYear), Month(currentMonth), Day(currentDay));

Лол. Переменная currentYear должна быть типа Year, переменная currentMonth типа Month. И тогда оп-па и код нормально выглядит. Я не знаком со спецификой разработки на C++, но создание экземпляров таких спец.типов с легкостью локализируется в небольшом количестве кода, а дальше — уже просто тупая передача данных между методами. Так что ваш аргумент принимается, но нивелируется.
А надо ли много копипастить? Например, есть ключ сущности постов (PostKey: EntityKey) или ключ сущности комментариев (CommentKey: EntityKey). В итоге нужно научить корректно с этим работать десериализаторы/сериализаторы, дебагер, биндеры (это специфично для веба — штуки, которые умееют из данных http-запроса строить специфичные модели, чтобы не работать с просто строками). + Научить операциям неявного приведения int -> PostKey; явного приведения PostKey -> int; определить корректные сравнения на равность. Создание экземпляров таких сущностей локализуются в каких-то определенных местах; явное использование сырых значений тоже локализуется в каких-то определенных местах.

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

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

Рекомендую присмотреться внимательно к данному подходу. Именованые параметры, кстати, эту проблему решают не во всех местах.
Скажем, вместо реализации INotifyPropertyChanged просто добавить пару символов к определению свойства.

Это уже сейчас можно делать через кучу разных инструментов (например Fody.PropertyChanged).

А вот возможность встраиваемых DSL-ей — интересна
ripatti проблема в том, что сортировка подсчетом требует O(k) дополнительной памяти, где k — размер интервала чисел, которые сортируются. Т.е. если у нас могут быть числа от минус миллиона до плюс миллиона, то нам нужно два миллиона битов (а если мы сортируем словарь, а не просто числа, то нам потребуется гораздо больше, но опять же O(k) памяти). Проблему с памятью можно решить например так:
а) разбиваем интервал 0..k на два (0..k/2 и k/2..k)
б) делаем два прохода сортировок. В первом проходе делаем сортировку для чисел только из первого интервала, во втором делаем сортировку для чисел только из второго интервала
в) объединяем результаты (поскольку у нас интервалы не пересекаются, то это сделать просто)
Если мы все еще не решили проблему, то каждый из полученный подинтервалов делится еще раз на два, для подподинтверала делается два сортировка, результаты подподинтервалов объединяются, потом объединяются результаты подинтервалов. Итого получаем время O(NlogK) если хотим снизить потребление памяти до фиксированного. Ну как-то так.
Parsing, Resolving, Highlight, Folding

Как насчет полной поддержки языка с корректностью на уровне студии? Т.е. можете ли вы гарантировать что у вас реально корректный код, который покрывает все редкие моменты?

Base Refactoring, Some Quick Fixes

Базы не хватает. Есть очень много всего клевого, что можно реализовать только теми, кто непосредственно разрабатывает какой-то определенный софт на C#. Определенные рефакторинги, определенные сниппеты.
Появляется VS Community Edition, которая для мелких контор бесплатная. Для студентов даже Ultimate версия бесплатная. В саблайм (он правда платный, но не очень) добавляют довольно мощную поддержку C#. Чем ваша среда будет лучше этих двух вариантов?
Вы не совсем правы. github.com/mono/roslyn. Roslyn еще не совсем зарелизился. Он будет частью Mono после релиза

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Registered
Activity