Здравствуйте, VladD2, Вы писали:
VD>Значит я новичек-непрограммист, так как мне порой рефакторинга выноса кода в локальную функцию или метода, очень не хватает в Nemerle. VD>Комплит и навигация тоже делает мою работу существенно быстрее.
Я имел в виду не-текстовые редакторы — формы, диаграммы, итп. По моему опыту, даже WinForms быстрее создаётся в коде.
Здравствуйте, LaptevVV, Вы писали:
PSV>>Интересен и неоднозначен способ как схемы создавать. Ковыряние мышкой — это для какого-нибудь Visio, а не для программистов. Нужен удобный текстовый синтаксис, причём увлекаться псевдографикой, т.е. полноценными прямоугольниками и т.п., не стоит. Лучше вложиться в рамки символов "| — + -> * #" и пр. Затем, уже когда нужно, рисовать полные весёлые картинки, на экране, печать, экспорт и т.д. К сожалению, сейчас в голову ничего конкретного не лезет, чётко сказать не могу.
LVV>Язык представления — это правильно. И то, что он должен быть доступен руками набрать — это тоже правильно.
Именно так. Для программистов текстовые файлы — как калькуляторы для бухгалтеров . Для них в программах в различных элементах для редактирования данных часто делают кнопочки, что-то вроде комбобокса, где по кнопке выпадает калькулятор. Кроме того, часто где-то вверху есть большие кнопки для вызова калькулятора, календаря, да и в винде есть свой калькулятор. Но я толком и не видел, что ими кто-то пользуется: под рукой всегда есть калькулятор с большими кнопками. Поэтому, когда скинули "перфокарты" — счёты — пока лучше для них ничего не придумали
PSV>>Сомнительна польза от наличия таких схем в монстрах-IDE в виде Vis. studio. Понимаете, большая часть народа (но не все), кто работает в студии, эклипсе и пр., вынуждены будут рисовать какой-нибудь UML или какие-то диаграммы в той же Visio. А вот те, кто не чурается (часто совместно с монстрами) работать в эмакс/вим/сублиме/jedit и им подобным — очень запросто могут подраконить. К тому же, у меня в голове была косвенная мысль, что не плохо было бы, если студентов пораньше познакомить с программисткими редакторами, и чем раньше у них придёт понимание того, зачем они нужны — им легче будет жить (естественно, кто сам себе с детства всё выхватывает и "в теме" — того и учить не надо, не мне Вам рассказывать).
LVV>Спасибо за мысль — я попробую что-нить подобное внедрить на 3 курсе в дисциплине по системному ПО.
Имхо, если речь идет про С/С++, то это не очень удачная сфера для какого-то знакомства с вимом/эмаксом. Здесь как раз лучше, если для освоения тяжелого С/С++ будут помогать иде, та же студия, или если и кроссплатформа осваивается — какой-нибудь QtCreator, CodeBlocks и пр. Те интузиасты (и их не мало), кто ваяет на С в виме/эмаксе, как правило, уже опытные в С, и собак наелись в разных монстрах-иде. Здесь и язык тяжелый, и инструмент потребует не малого вникания.
По своему опыту. Я сначала пытался ринутся на вим/эмакс, уже имея представление, какие профиты они могут дать. Но не было практичной задачи, которая бы нагнула, и я так их осилить и не смог. Затем я нашёл способ как себя заставить. Я попробовал Vimperator/Pentadactyl — плагины для FireFox, эмулирующие управление броузером в стиле вима. Понравилось, наваял себе пару расширений, и до сих пор так и "подсёрфываю" — дошло, чем может быть вим. Попробовал KeySnail — похожий плагин, но эмулирующий эмакс (местами приятнее вимператора) — ага, вот ты какой эмакс. И честно, когда запускаешь супер-монстра студию или эклипс и пр. — очень становится печально при месеве всяких кнопок с панелями.
Также в виме/эмаксе есть и другая сторона. Сейчас я вынужден редко ими пользоваться. Одновременно приходится работать и в монстрах, и во всяких системах для работы с СУБД, и прочий спец. софт. И когда одновременно переключаешься с одного распространенного принципа управления на другой (и в виме и эмаксе — они тоже разные) — в голове не успеваешь переключиться, путаешься, и это реально мешает. К тому же, у нас в команде есть свои всякие наколенные язычки, DSL и пр. и для них есть и наколенная иде на базе JEdit — оказалось проще и быстрее приспособить, чем тот же эклипс, да и работать в нем приятнее. Поэтому сейчас JEdit у меня основной редактор (именно как программисткий редактор).
По сему, лучше смотреть на вим/эмакс при изучении какого нибудь питона/руби. Здесь и монстры-иде не сильны в плане развитого автокомплита, код-броузера, рефакторинга и т.д. в силу динамичной природы таких языков. Как раз, хороший момент, когда можно попробывать другой стиль разработки. Например, далеко не всегда автокомплит — супер киллер-фича, часто он и тормозной, и не всегда верный в этих монстрах. В простых языках частенько достаточно быстрого (!) автокомплита из уже введенных слов или из соседних буферов + предопределенный список элементов. При этом никаких тормозов и раздражений, плюс удобные всякие коде-сниппеты, умная расстановка отступов, всякие приятненькие автоставлялочки/удалялочки, множественное выделение и пр. — красота. Плюс удобное управление средой, огромный потенциал для реализации нужных именно тебе операций над текстом и т.д.
Имхо, есть смысл начать с Sublime Text 2. Он "не безгрешен", но думаю, что его авторы в душе не сильно против, что их триал будут юзать в образовании их будущие клиенты (каюсь, сам его не приобретал, ибо использую крайне редко). Редактор простой и имхо "расово-верный". Если его "прокачать" — станет понятно, зачем смотреть на вим с эмаксом.
И ещё. По поводу системного программирования. У меня как раз появилась потребность после долгого перерыва снова дёрнуться к C/C++. Есть мысль, что в этих рамках неплохо глянуть также на Go. Я недавно о нём вспоминал, вот здесь
мой пост в соседнем форуме и от него по ветке ещё пару сообщений, где можно узреть кое-какие взгляды, почему на Go не мешало бы обратить внимание. Сейчас Go промышленно малопригодный, и особо с ним ненужно увлекаться, но обратить внимание на то, что он может быть альтернативой — стоит. Язык концептуально — очень неплох. К тому же, напр., если понять, почему там нет классов, и чем интерфейсы их лучше — гараздо легче потом понимаешь классы типов в хаскеле, а типы с протоколами в кложуре — ценить начинаешь, и т.д.
LVV>В планах — переписывание пилотного проекта на Qt — уже пути намечаем, Qt практически позволяет все, что доступно в студии. LVV>Пацан, который делал курсовую по диаграмма — делал сразу на Qt (2 курс)... LVV>Если с темы не слиняет — это ему и задел на диплом, и поучаствовать в конкурсах Умника и Старта. LVV>Мы, кстати, с пилотным проектом семантического редактора Умник выиграли.
LVV>Еще мысль есть, но попозже, сделать то же самое и в БлэкБоксе. LVV>И тогда сравнить трудности и особенности реализации: Студия- QtCreator-BlackBox
Не совсем понятно, что именно планируется переписывать на разные языки: весь учебный комплекс или систему по поводу схем. Имхо, в любом случае, затея не практична. Понимаете, нас умные дядьки учат, что вы через всякие супер-пупер ORM в своих системах сможете менять любую СУБД как перчатки. На практике в сложных и огромных системах смена СУБД — это как секс среди подростков: о нём больше говорят, чем есть на самом деле. Если Вы зададите цель — сравнить разработку в "Студия- QtCreator-BlackBox" — это косвенно станет главным, и функционал комплекса будет не в ту сторону, и соответствующего масштаба/уровня.
Кстати, имхо, не стоит углубляться в рамках BlackBox. Академически — вещь интересная, крайне полезно знать его концепции, но система — промышленно не применима. Достаточно человека познакомить с ней, когда ему потребуется, напр., какие-то инженерные расчёты — он вспомнит о нём и успешно решит свою задачу (если другого варианта не будет).
А сравнить принципы разработки в разных языках — вещь обязательная. Но, имхо, это лучше делать в рамках уч. процесса, реализуя какие-то спец. задания, например, где конкретно видно различие в подходах, скажем, где-то RAII, а где-то try-finally, и в таком духе.
И ещё, по поводу этих драконов. Имхо, есть смысл подойти к этому делу по аналогии с системами для создания всяких Wiki-страниц, или документации, как это делает AsciiDoc например. Т.е. нужно:
— сформировать "стандарт" языка — простое (!) текстовое представление дракон-схем;
— реализовать движок, который будет текст конвертить в HTML-представление схемы, с возможностью интерактивного взаимодействия — переходы между схемами, напр., из какого-то блока-прямоугольника раскрываем его схему-детализацию и далее в таком духе. Если это оправдает себя, то возможны и другие форматы: pdf, свои бинарные и т.д. Реализовать нужно на чистом C++, без Qt — STL, Boost, минимум зависимостей, кроссплатформа, куда хошь прикручивай и делай отдельные утилиты и т.д.
— нужны плагины для всяких редакторов: раскраска синтаксиса, форматирование, "тексто-помогалки" и т.д. Такое соседство рядом с эмаксовым org-mode — самое то.
— нужны инструменты и для графических редакторов, напр., какое-то расширение для Visio. Я не спец по диаграммам, включая и эту Visio, возможно есть и другие общепризнанные вещи.
Это то, что востребовано в реальной жизни. Для диплома, имхо, главное — движок. Если в уч. комплексе есть и свои текстовые редакторы, и какие-то графические — интеграция движка, имхо, будет гармоничной.
Надеюсь, что общая идея понятна (блин, вот мысли летят и руки прям чешутся конкуренцию составить )
Хочу обратить внимание , что среда разрабокти + язык, просто обязаны выполнять функцию иерархической декомпозицию .
Другими словами разбивать сложную программу на небольшие куски по 3 — 5 сущностей. В этом плане представленные визуальные решения не выдерживают никакой критики.
Здравствуйте, AndrewVK, Вы писали:
LVV>>Пока речь идет в первую очередь о лабах, курсовых и дипломах. Нужен инструмент для разбора и оценки. AVK>И чем текстовый вид не прокатил для "разбора и оценки"? Тяжело парсер было написать?
Парсер — анахронизм 50-60 годов. Пора уже без парсеров обходится, если есть возможность.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, PSV100, Вы писали:
PSV>Имхо, если речь идет про С/С++, то это не очень удачная сфера для какого-то знакомства с вимом/эмаксом. Здесь как раз лучше, если для освоения тяжелого С/С++ будут помогать иде, та же студия, или если и кроссплатформа осваивается — какой-нибудь QtCreator, CodeBlocks и пр. Те интузиасты (и их не мало), кто ваяет на С в виме/эмаксе, как правило, уже опытные в С, и собак наелись в разных монстрах-иде. Здесь и язык тяжелый, и инструмент потребует не малого вникания.
QtCreator мои студиозы и так осваивают — в процессе писания курсовой по ООП. Я не запрещаю — пишут и в CodeBlocks. Все это 2 курс. PSV>[...]
Спасибо за массу информации! Весьма полезная инфа от практиков — то что нужно.
Я постепенно буду это все пробовать в том или ином виде.
К сожалению, наши молодые сплошь погрязли в микрософт. Задачи позволяют не слезать с этого монстра.
Да и свалили с кафедры — слишком мало платят. А они — хорошие программеры и в нашей Астрахани запросто зарабатывают 40-50 штук.
Для Астрахани это серьезные деньги. А в универе — платили 10 — кандидатам -доцентам.
Но еще есть я — и я обязательно буду пробовать. LVV>>Еще мысль есть, но попозже, сделать то же самое и в БлэкБоксе. LVV>>И тогда сравнить трудности и особенности реализации: Студия- QtCreator-BlackBox
PSV>Не совсем понятно, что именно планируется переписывать на разные языки: весь учебный комплекс или систему по поводу схем. Имхо, в любом случае, затея не практична. Понимаете, нас умные дядьки учат, что вы через всякие супер-пупер ORM в своих системах сможете менять любую СУБД как перчатки. На практике в сложных и огромных системах смена СУБД — это как секс среди подростков: о нём больше говорят, чем есть на самом деле. Если Вы зададите цель — сравнить разработку в "Студия- QtCreator-BlackBox" — это косвенно станет главным, и функционал комплекса будет не в ту сторону, и соответствующего масштаба/уровня.
Не. Мы сначала делаем законченную версию в рамках студии на Додиезе — не отвлекаясь на переписывание. Когда система будет в работе — попробуем переписать — именно с целью получить опыт переписывания и переноса на другие платформы. PSV>Кстати, имхо, не стоит углубляться в рамках BlackBox. Академически — вещь интересная, крайне полезно знать его концепции, но система — промышленно не применима. Достаточно человека познакомить с ней, когда ему потребуется, напр., какие-то инженерные расчёты — он вспомнит о нём и успешно решит свою задачу (если другого варианта не будет).
А я так и делаю. Я именно с концепциями и знакомлю.
Поскольку многие школьники паскаль в школе учили — им без проблем в БлэкБоксе наваять программу. PSV>[...] PSV>Это то, что востребовано в реальной жизни. Для диплома, имхо, главное — движок. Если в уч. комплексе есть и свои текстовые редакторы, и какие-то графические — интеграция движка, имхо, будет гармоничной.
Опять же — спасибо за практическую информацию!
PSV>Надеюсь, что общая идея понятна (блин, вот мысли летят и руки прям чешутся конкуренцию составить )
НУ, так конкурируйте!...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, minorlogic, Вы писали:
M>Хочу обратить внимание , что среда разрабокти + язык, просто обязаны выполнять функцию иерархической декомпозицию .
M>Другими словами разбивать сложную программу на небольшие куски по 3 — 5 сущностей. В этом плане представленные визуальные решения не выдерживают никакой критики.
1. Единица трансляции — модуль. Модуль пишет программист. Он выделяет сущности и собирает их в модули.
2. Модули — загружаемая и исполняемая единица системы.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, minorlogic, Вы писали:
M>>Хочу обратить внимание , что среда разрабокти + язык, просто обязаны выполнять функцию иерархической декомпозицию .
M>>Другими словами разбивать сложную программу на небольшие куски по 3 — 5 сущностей. В этом плане представленные визуальные решения не выдерживают никакой критики. LVV>1. Единица трансляции — модуль. Модуль пишет программист. Он выделяет сущности и собирает их в модули. LVV>2. Модули — загружаемая и исполняемая единица системы.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, minorlogic, Вы писали:
M>>>Хочу обратить внимание , что среда разрабокти + язык, просто обязаны выполнять функцию иерархической декомпозицию .
M>>>Другими словами разбивать сложную программу на небольшие куски по 3 — 5 сущностей. В этом плане представленные визуальные решения не выдерживают никакой критики. LVV>>1. Единица трансляции — модуль. Модуль пишет программист. Он выделяет сущности и собирает их в модули. LVV>>2. Модули — загружаемая и исполняемая единица системы.
G>Модули 1. и 2. могут не совпадать.
Каждый написанный и отлаженный модуль может быть загружен и выполнен.
Или вы имеете ввиду представление модулей — исходных и исполняемых?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
AVK>>И чем текстовый вид не прокатил для "разбора и оценки"? Тяжело парсер было написать? LVV>Парсер — анахронизм 50-60 годов.
О как. А есть хоть один современный промышленный язык без парсера?
LVV> Пора уже без парсеров обходится, если есть возможность.
Зачем?
... << RSDN@Home 1.2.0 alpha 5 rev. 21 on Windows 7 6.1.7601.65536>>
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>Здравствуйте, minorlogic, Вы писали:
M>>>>Хочу обратить внимание , что среда разрабокти + язык, просто обязаны выполнять функцию иерархической декомпозицию .
M>>>>Другими словами разбивать сложную программу на небольшие куски по 3 — 5 сущностей. В этом плане представленные визуальные решения не выдерживают никакой критики. LVV>>>1. Единица трансляции — модуль. Модуль пишет программист. Он выделяет сущности и собирает их в модули. LVV>>>2. Модули — загружаемая и исполняемая единица системы.
G>>Модули 1. и 2. могут не совпадать. LVV> LVV>Каждый написанный и отлаженный модуль может быть загружен и выполнен. LVV>Или вы имеете ввиду представление модулей — исходных и исполняемых?
Нет, я имею ввиду фразу "единица трансляции", например файл в C++, но он не может быть отдельно загружен и выполнен.
Здравствуйте, LaptevVV, Вы писали:
VD>>И как насчет таких вещей как: разрешение перегрузок, неявное приведение типов, лифтинг операторов в Nulable? LVV>Никаких неявных преобразований. Перегрузку операторов для начинающих — нафиг!
Тогда не надо называть "это" C#-ом. Называйте это честно — C-подобный синтаксис.
LVV>Нуллабле — пока нафиг.
Настоящий компилятор тем и отличается от игрушечного, что содержит миллионы тонкостей. Сделать игрушечный компилятор может почти любой программист. А вот настоящий единицы в этом мире. В прочем, надеюсь, что с появлением Н2 это изменится.
LVV>>>Тут еще работать и работать. Но к сентябрю хотим первую версию запустить. Прямо в классах. VD>>Версию чего? Если вы решили сделать поддержку C# 4 по спецификации, и вас двое человек, то первого сентября у вас может что-то и заработает, но только не в этом году, а годка эдак через 2 (а то и через 5). LVV>Нас 4 человека.
Это мало что меняет. МС убил на упрвляемую версию своего компилятора шарпа уже где-то лет пять. И они еще не закончили. Но они делают настоящий продукт, а не игрушку. Так как вы себе таких задач не ставите, то может и выйдет чуть быстрее.
Но, в любом случае, твои планы — это прожектерство. Все что у вас будет осенью — это прототип игрушечного компилятора в котором не будет тучи деталей. А, как я уже сказал, компилятор определяют именно детали.
LVV>Среда уже работает.
Это что-то вроде того что есть в Блэкбоксе? Тогда не надо это средой называть. Тебя просто не поймут. Под средой в наше время понимают IDE класса VS, Idea или Eclips, но никак не Вордпэл с функций запуска кода.
LVV>Идет не разработка а рефакторинг. В первую очередь рефакторинг общей архитектуры.
Рефакторинг чего? Блэкбокса, что ли?
LVV>Уточнение семантики конструкций, исследование операций рефакторинга для включения в систему. LVV>Анализ действий программиста в среде. LVV>Так что к сентябрю, думаю, успеем. LVV>Проблема пока в разработке хорошего хелпа — один пацан как-то не справляется пока...
Хелпом сыт не буедешь.
В общем, похоже, что ты в очередной раз прочел статью и сделал из нее совершенно неверные выводы. Ваша игрушка ничего не имеет общего с тем о чем говорилось в статье. Соответственно она будет иметь примерно такой же интерес для программистов как и Блэкбокс, т.е. чуть менее чем никакой.
Не знаю, что ваше новое творение может дать с точки зрения обучения, но у меня стойкое впечатление, что вы готовите учеников к "прошлой войне".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, LaptevVV, Вы писали:
LVV>Мы учим программированию, а не технологиям. Для современных технологий у них дофига отдельных курсов. LVV>А программмеру — полезно с разными подходами знакомиться.
Вот именно — разным, а не одному Блэкбоксу.
LVV>Тем более, что БлэкБокс обладает некоторыми чертами, которые даже профи оценить не способны...
Ничем он для профи не интересен. В прочем, они ученикам ничем не интересен. Им в начале как нельзя нужна помощь. Современные IDE ее оказывают. А Блэкбокс застрял в прошлом. Никакой помощи от него нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>В прочем, они ученикам ничем не интересен.
Я представляю реакцию студентов, которые имели возможность программировать в любой современной IDE, при виде этого блэкбокса: "Бл*! Что это за ***ня?! И мне с этим работать???"
Более того блэкбокс уже не интересен даже самому Вирту. Он на него давно забил. Команда под руководством Вирта даже не смогла доделать версию 1.6, которую они забросили на релизе rc5 в 2007 году. И только суровые русские программисты-преподы уверовшие в православность Вирта пытаются допилить этот гребанный блэкбокс. У них мало что выходит. Но своих студентов помучить блэкбоксом они более чем рады.
Здравствуйте, LaptevVV, Вы писали:
LVV>http://ajc.su/koding/budushhee-programmirovaniya/ LVV>[q] LVV>[Автор оригинального текста — Paul Chiusano, программист, работает в Capital IQ, пишет преимущественно на Scala. Один из разработчиков библиотеки scalaz — прим. пер.]
Лаптев, ты меня просто разочаровываешь. В кои то веки запостил хорошую ссылку
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, LaptevVV, Вы писали:
LVV>>Мы учим программированию, а не технологиям. Для современных технологий у них дофига отдельных курсов. LVV>>А программмеру — полезно с разными подходами знакомиться.
VD>Вот именно — разным, а не одному Блэкбоксу.
Влакд, Студия 10, QtCreator, BlackBox — для второго курса достаточно. LVV>>Тем более, что БлэкБокс обладает некоторыми чертами, которые даже профи оценить не способны... VD>Ничем он для профи не интересен. В прочем, они ученикам ничем не интересен. Им в начале как нельзя нужна помощь. Современные IDE ее оказывают. А Блэкбокс застрял в прошлом. Никакой помощи от него нет.
"А баб яга — против" (с).
Оставим этот спор о ББ.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, gandjustas, Вы писали:
LVV>>>>1. Единица трансляции — модуль. Модуль пишет программист. Он выделяет сущности и собирает их в модули. LVV>>>>2. Модули — загружаемая и исполняемая единица системы. G>>>Модули 1. и 2. могут не совпадать. LVV>> LVV>>Каждый написанный и отлаженный модуль может быть загружен и выполнен. LVV>>Или вы имеете ввиду представление модулей — исходных и исполняемых? G>Нет, я имею ввиду фразу "единица трансляции", например файл в C++, но он не может быть отдельно загружен и выполнен.
В том-то и дело, что С++ в этом месте остался в 70 году...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, minorlogic, Вы писали:
M>Я говорил про декомпозицию на всех уровнях
Ну, вы же понимаете, что граф связей — это только представление, для программиста?
В явном виде он же не хранится.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!