Luca
Модератор
Зарегистрирован: 05.10.2012
Сообщений: 1276
На протяжении многих лет я экспериментировал с различными инструментами, преимущественно с IDE для Java и Scala.

В начале я пользовался простым текстовым редактором a-la Emacs, затем перешел на JEdit. В 2004 году перешел на Eclipse, которым пользовался до 2008 года и после ряда безуспешных попыток пересесть на NetBeans остановился на IntelliJ. В прошлом году от IntelliJ я отказался т.к. начал писать на Scala, т.к. IntelliJ "ниасислила" более функциональный и зрелый синтаксис. Как итог пришлось использовать Scalaz.

Мне довелось немного поразрабатывать на Clojure и даже Haskell. Эти два языка действительно замечательны и знакомство с ними привело меня к мысли, что если язык действительно хороший, то IDE не нужна, пока в редакторе кода есть подсветка синтаксиса и скобки в случае с Clojure и отступы при использования Haskell.

Как мне кажется, для той же Scala IDE тоже не нужна т.к. там проблем с навигацией по тоннам исходного кода, как это случается с Java.

IDE как Проводник по исходному коду
Для Java программистов IDE необходима как воздух по целому ряду причин, и не только по тому, что IDE позволяет максимально быстро перейти от мысли к коду, но и потому, что в Java приходится сталкиваться с кучей мелких файлов для кажого интерфейса и класса в приложении. Итого разработка оень быстро превращается в игру исходниками и навигации браузингу по самим исходникам проекта. Итого программирование на java не возможно без IDE.

В функциональном программировании, без Java-подхода, можно легко обойтись без сотен файлов, а реализовать все посредством неймспейсов. Это значит, что используя функциональные подходы и языки их реализующий мы можем избежать необходимости загрузки огромного монстра-проводника по исходным файлам, каким является тот же Eclipse или IDEA. И для разработки нам хватит любого простого текстового редактора.

Но IDE это же не только проводник по исходникам!
Да, IDE конечно позволяет куда больше, чем ходить туда-сюда по файлам проекта, она так же позволяет выполнять тесты, рефакторинг, умеет автозавершать код и тд. Однако с REPL (REPL - простая интерактивная среда разработки) и хорошим инструментом для сборки все это может не потребоваться. К примеру, что быстрее запустить тесты Scala в IDE или в SBT SBT конечно-же будет быстрее.

Выводы
Начал программировать я 7 лет назад. Довелось попользоваться всем, начиная с блокнота, заканчивая здоровенными IDE, а так же разными языками от Хаскеля до Скалы. Могу сказать одно - IDE пригодна лишь для навигации по тяжелому коду, а наличие такого тяжелого кода может свидетельствовать только о том, что язык который вы используете - сакс или же вы им пользуетесь не по назначению.

Комментарии32

0 0

Babusha
Модератор
Зарегистрирован: 07.10.2012
Сообщений: 664
Строим формальную логическую последовательность (рациональных звененей вроде не потерял)
1. IDE ненужна в функциональных языках
2. Функциональные языки ненужны
3. IDE не ненужна в не-функциональных языках
4. IDE нужна.

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

0 0

gaal
Новичок
Зарегистрирован: 22.10.2012
Сообщений: 292
Хе-хе. Зачастую пишу в текстовом редакторе. Обычно, когда работаю надо проектом, просто помню, что и где лежит. В голове визуализирую.

> Начал программировать я 7 лет назад

я 17-18 лет назад. году в 94-95, когда увидел ZX Spectrum, Корвет и Yamaha. Basic, assembler (машинные коды). Своего тогда еще не было. До сих пор зачастую проектирую какие-то части сначала на бумаге. В универе были уже i286, i386, i486, Pentium и т.д.

http://img13.nnm.ru/8/4/4/6/3/ccf661c23835b993b54a0a15d33.jpg

cпойлер

http://ru.pc-history.com/wp-content/uploads/Yamaha_MSX-2_KUVT-300x225.jpg


http://byaki.net/uploads/posts/2009-07/1248288758_00.jpg


Кстати иногда пишут. Вот вы не имеет права критиковать Windows, так как мы все с нее начинали. У меня такое право есть :)
-- Кактус, который семь лет простоял возле монитора компьютера, умеет самостоятельно переустанавливать Windows

0 0

MOP3E
Золотой пользователь
Зарегистрирован: 11.01.2013
Сообщений: 1952
Могу сказать одно - IDE пригодна лишь для навигации по тяжелому коду, а наличие такого тяжелого кода может свидетельствовать только о том, что язык который вы используете - сакс или же вы им пользуетесь не по назначению.
Видимо, для отладки программы IDE уже не нужна Если взять ту же MSVS, то там есть специальный режим компиляции Debug, в котором в программу внедряется дополнительный код, облегчающий перехват ошибок исполнения. Ну и, естественно, в её составе есть дебаггер, позволяющий оттрассировать программу и отследить все изменения переменных в процессе выполнения алгоритма. Тяжёлого кода не бывает, бывают большие проекты.

Обычно, когда работаю надо проектом, просто помню, что и где лежит. В голове визуализирую.
У меня этих проектов два десятка. В голове всё не удержишь, тем более, что изменения приходится вносить раз в год-полгода. Лазить по всем при помощи "блокнота" - благодарю покорно! Тем более, что существуют такие языки программирования, отличные от банального текста. Вот как, например, ты будешь программировать в CFC из блокнота И как удержишь всю диаграмму в голове Никак.
edited: MOP3E, 30.03.2013 20:39

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
Приверженцам блокнота:
push 0a000h
cld
mov ah, 13h
int 10h
pop es
dec cx
xor al, al
rep stosb
ret ; опционально

Интересно, остались ли люди, способные понять что делает этот код :)

0 0

MOP3E
Золотой пользователь
Зарегистрирован: 11.01.2013
Сообщений: 1952
Интересно, остались ли люди, способные понять что делает этот код :)
Лет 10 назад я слышал, что специалисты АСУТП какой-то конторы наловчились заменять на материнских платах стандартный BIOS на прошивку для станка с ЧПУ. Вот это действительно была бы жесть. Но, как показала дальнейшая практика, скорее всего это был фейк: ЧПУ на DOS встречаются регулярно, а ЧПУ на BIOS я не видел ни разу.

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
MOP3E, да мне просто интересно было, при всем своем пафосе смогут ли линупсойды прочитать банальный x86 ассемблерный код (они же типа элитарные, прямо юниксы юзают!), и тем более понять что он делает. А если xor al,al на dec ax поменять - что сделает :) И пусть скажут спасибо что я не в маш.кодах написал :)
edited: dr_vlat, 30.03.2013 21:44

0 0

Caravaggio
Новичок
Зарегистрирован: 17.11.2012
Сообщений: 28
1. IDE ненужна в функциональных языках
2. Функциональные языки ненужны
3. IDE не ненужна в не-функциональных языках
4. IDE нужна.
3 не следует из 1, 2.
4 не следует из 1, 2, 3.
Неуд по логике.

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
да мне просто интересно было, при всем своем пафосе смогут ли линупсойды прочитать банальный x86 ассемблерный код (они же типа элитарные, прямо юниксы юзают!), и тем более понять что он делает.
Было очень глупо. Больше так не надо. Набор вырванных из контекста ассемблерных мнемоник, включая архаичную команду вывода строки прерывания 10h...все плохо.
А если xor al,al на dec ax
Если исключающее «или» над нижней частью 16-разрядного регистра поменять на декремент всего этого регистра Очевидно, что вы программированием на языке ассемблера на жизнь не зарабатываете. Хотя вполне допускаю, что когда-то его изучали.
Вот если расскажете, как без использования дополнительной памяти обменять содержимое двух регистров, причем не заглядывая для этого в интернеты – можете спасти лицо.
И не продолжайте клоунаду, прошу вас, я не только ассемблерный код понимаю, я еще и знаю, как его выполнение реализовано аппаратно, вплоть до количества электронов в ячейках современной памяти, и как физически все устроено в p-n переходах n-МОП-логики. Тоже мне, бином Ньютона.
-- nVidia, it's you Just follow my finger...
edited: Linups Trololvalds, 31.03.2013 5:21

0 0

MOP3E
Золотой пользователь
Зарегистрирован: 11.01.2013
Сообщений: 1952
Было очень глупо. Больше так не надо. Набор вырванных из контекста ассемблерных мнемоник, включая архаичную команду вывода строки прерывания 10h...все плохо.
Вполне конкретная подпрограмма, которая делает вполне конкретные вещи. А то, что ты не знаком со спецификой программирования в DOS, это действительно плохо.

Если исключающее «или» над нижней частью 16-разрядного регистра поменять на декремент всего этого регистра Очевидно, что вы программированием на языке ассемблера на жизнь не зарабатываете.
Уй-юй-юй, как мы заговорили, когда нихрена понять не смогли!

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

И не продолжайте клоунаду, прошу вас, я не только ассемблерный код не понимаю, я еще и не знаю, как его выполнение реализовано аппаратно
/fixed

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Вполне конкретная подпрограмма, которая делает вполне конкретные вещи. А то, что ты не знаком со спецификой программирования в DOS, это действительно плохо.
Аплодирую. Ваша клоунада удачна на все 100.
xchg. Почему ты считаешь эту команду таким страшным тайным колдунством
А без xchg
Дурачок ты ряженый, Алеша.
-- nVidia, it's you Just follow my finger...

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
Было очень глупо. Больше так не надо. Набор вырванных из контекста ассемблерных мнемоник, включая архаичную команду вывода строки прерывания 10h...все плохо.[quote
Пиздеееец...я долго смеялся, спасибо что мне с бодуна подняли настроение. Я то, дурак, думал, что за годы демомейкинга на x86 немного научился кодить на асме. Но мудрые пингвины как обычно считают иначе.

push 0a000h ; в стек запоминаем начало сегмента видеопамяти
pop es ; и заносим его в регистр ES
mov ah,13h ; в аx заносим 0013h , видеорежим 320x200x8
int 10h ; и этот режим включаем
cld ; трюк, обнуляем флаг DF, а заодно и регистры
dec cx ; выставляем CX (из за cld он у нас 0) в 65535, экономим 2 байта.
xor al, al ; AL (цвет пикселя) выставляем в 0
rep stosb ; заполняем экран цветом из AL
ret ; выходим

Можете даже не отвечать.

P.S. Истины ради, замечу, что там еще xor di,di не помешает, а то есть шанс, что экран начнет заполняться не с 0.
edited: dr_vlat, 31.03.2013 12:32

0 0

MOP3E
Золотой пользователь
Зарегистрирован: 11.01.2013
Сообщений: 1952
+100500! Так их, пингвиноидов!

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
push 0a000h ; в стек запоминаем начало сегмента видеопамяти
Это который был обычно по адресу 0xb8000 Не, оно, конечно, в режиме 13h он по адресу 0xa0000, но всё равно мимо.
mov ah,13h ; в аx заносим 0013h , видеорежим 320x200x8 int 10h ; и этот режим включаем
Функция 13h сервиса int 10h BIOS выполняет вывод строки. facepalm.com
Установка видеорежима делается функцией 0h этого же прерывания. И 13h – это 640x480 / 80x30.
Так что таки mov al,13h
Я то, дурак, думал, что за годы демомейкинга на x86 немного научился кодить на асме.
Да-да, демомейкер, который «устанавливает видеорежим» функцией вывода строки. Продолжайте в том же духе. За подобную реализацию очистки экрана (AL=0 – черный цвет) два с минусом. Демомейкер. Гы-гы.
Ах да, ret куда Я бы еще понял cd 20 (int 20h), а тут внезапно ret неизвестно куда.
-- nVidia, it's you Just follow my finger...
edited: Linups Trololvalds, 31.03.2013 14:09

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
Насчет AL согласен. Сто лет не писал на асме, ошибся регистром. Кстати я обожаю линукс-тактику придирания к мелочам.
"Очистки экрана"... ну давайте inc al сделаем, пускай будет, если мне память не изменяет синий цвет. Парой постов ранее вы вообще этот код называли, как там оно было, "набором мнемоник" То есть ни в зуб ногой не понимали что он вообще делает.
Теперь, когда я вам все разжевал, пафосно гыгы-каете. Кстати, гыгыкание, как я понял вообще характерно для пингвинов.
Я с вами даже спорить не буду, тупо неинтересно. Выше вы уже показали уровень своих линукс-знаний, чем кстати изрядно повеселили.

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Насчет AL согласен. Сто лет не писал на асме, ошибся регистром.
А вот если ошибаетесь, нечего тут возвышаться. Я умею на асме не только интеловском, и не только для x86. И не в теории, а работающие программы писать. Так что давайте не будем тут меряться.
Парой постов ранее вы вообще этот код называли, как там оно было, "набором мнемоник"
Это я погорячился. Потому что вы ошиблись регистром и превратили реальный код в бессмысленное копирование al в память. Очевидно, я не обязан угадывать в ваших ошибках код установки видеорежима и копирования содержимого al в видеобуфер.
То есть ни в зуб ногой не понимали что он вообще делает.
Ну да, бином Ньютона, мы это уже проходили. Да, я ничего не понимаю в коде, где допущены фатальные ошибки вроде неверного номера функции и указания неверного адреса видеобуфера. Если вы хотели похвастаться опытом программирования на языке ассемблера, то хотя бы проверили бы работоспособность своего кода. Он у вас тупо зависнет в лучшем случае.
-- nVidia, it's you Just follow my finger...

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Ну что, господа специалисты, знакомые «со спецификой программирования в DOS», как без xchg и задействования дополнительных регистров и памяти обменять содержимое двух регистров Демомейкинг, пилять...
xD
Ну как же так, XOR swap не нагугливается
xD xD
-- nVidia, it's you Just follow my finger...

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
"А вот если ошибаетесь, нечего тут возвышаться."
Вы прекрасно понимаете о чем речь, но линукс-занудство не дает покоя. Неверный регистр я пожалуй себе прощу, тем более он будет поправлен после первой же компиляции и запуска.
Насчет "возвышения" пожалуй соглашусь, вчера я был пьян, и написал тут оффтопик.
Насчет "неверного адреса видеобуфера", и еще кучи вещей что вы выше написали - я промолчу, мне действительно неприятно спорить с человеком, который "делает вид" что разбирается в теме.

P.S. Это конечно круто, прикопаться к регистру, когда там в коде еще дофига нефатальных, но ошибок. Но я вам про них не скажу :)

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
Ну что, господа специалисты, знакомые «со спецификой программирования в DOS», как без xchg и задействования дополнительных регистров и памяти обменять содержимое двух регистров Демомейкинг, пилять...
Вы говорите так, будто это что-то плохое. Вопрос изначально был задан не мне, посему я его проглядел. 3-мя xor-ами можно, да. Только зачем Ищите частности, пытаясь на этом подловить Ведь в ответ могут так-же спросить, например про быструю софтовую реализацию отрисовки полигонов, например. И придется гуглить.

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Насчет "возвышения" пожалуй соглашусь, вчера я был пьян, и написал тут оффтопик.
Вот и прекрасно. Моя критика тоже была жестче, чем оно того стоит.
Насчет "неверного адреса видеобуфера", и еще кучи вещей что вы выше написали - я промолчу, мне действительно неприятно спорить с человеком, который "делает вид" что разбирается в теме.
То есть, я ошибаюсь, и a000h = a0000h
Это конечно круто, прикопаться к регистру, когда там в коде еще дофига нефатальных, но ошибок.
Я код разбираю в стиле компилятора. Пофиг мне на другие ошибки, если фатальная ошибка уже найдена. И насчет «нефатально» необнуленного di тоже забавно. И куда вы собрались делать ret, тайна сия велика есть. Не, я вижу, что когда-то вы действительно писали на этом языке, когда долго не практикуешь, точность теряется, номера функций забываются, и адреса тем более. Но не думайте, что вокруг все такие невежественные. Я в совокупности два курса ВУЗа ассемблерами разными занимался. И в PSP помнил все важные позиции, и созданием COM-файла минимально возможной длины развлекался. Демомейкингом вот как-то не случилось на асме, с OpenGL умею вот кое-что, а это как-то не застал.
-- nVidia, it's you Just follow my finger...

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Вопрос изначально был задан не мне, посему я его проглядел.
Вопрос был изначально задан не вам, а местному троллю, который, в отличие от вас, ответа на него не знаетзнал. Потому что по его специальности это знать необязательно, и если бы он тут позу мэтра не принимал, то всё было бы вообще прекрасно.
-- nVidia, it's you Just follow my finger...

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
Можно написать a000h, можно 0a000h, одно и то-же.
Так как мы работаем досе, в пределах одного сегмента, то не возбраняется делать ret. Выход по 04ch/int 21h занимает лишние байты.
Насчет DI - обнулять да, следует. Я уже не помню почему, но он не обнуляется после cld. Так-же dec cx конечно сработает. Но 320*200=64000, а не 65535. Посему лучше mov cx, 64000 . А еще перед ret надо mov ax, 0003h int 10h, а то так в 13h и останемся.
Насчет всеобщей невежественности. Так уж получилось, что 90% линупсойдов умеют только громко кричать. Адекватные люди довольно редко встречаются.

0 1

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
Можно написать a000h, можно 0a000h, одно и то-же.
a0000
Там четыре нуля.
А еще перед ret надо mov ax, 0003h int 10h, а то так в 13h и останемся
Куда ret-то делаете Получается некая процедура, из которой куда-то возвращаемся. Вот поэтому и «вырванные из контекста». Если бы int 20h или int 21h с нулями в ah, было бы логично. Или вообще опустить завершение/возврат из процедуры.
Но 320*200=64000, а не 65535.
А 13h – это 640×480. 4b000h.
Так уж получилось, что 90% линупсойдов умеют только громко кричать.
Это кросс-платформенное явление. Большинство виндовсоидов еще и шагу без визардов с кнопкой «далее» ступить не могут. Но да, активные пользователи GNU/Linux часто склонны к агрессивной критике MS-экосистемы и порой заменяют содержание формой, это следует признать. Но MS заслуживает критики. К сожалению, критика плохо действует.
-- nVidia, it's you Just follow my finger...

0 0

dr_vlat
Пользователь
Зарегистрирован: 09.03.2013
Сообщений: 337
А 13h – это 640×480. 4b000h.
13h это 320x200. http://en.wikipedia.org/wiki/Mode_13h , дабы не спорить.
ret - ну мы же с COM-ом работаем, в дос и ret-имся. http://pastebin.com/8EgSjnJ4 чтобы не быть голословным.

0 0

Linups Trololvalds
Золотой пользователь
Зарегистрирован: 06.10.2012
Сообщений: 663
ret - ну мы же с COM-ом работаем, в дос и ret-имся
Ну, в принципе, так тоже можно. В общем, если перед переключением видеорежима сохранить где-нибудь al после функции 0fh прерывания 10h, а потом восстановить режим обратно, то для нетрезво написанного кода выглядит вполне достойно, хотя ошибки имели место.
-- nVidia, it's you Just follow my finger...

0 0

OpenMind
Пользователь
Зарегистрирован: 21.10.2012
Сообщений: 877
Это кросс-платформенное явление. Большинство виндовсоидов еще и шагу без визардов с кнопкой «далее» ступить не могут.
Это кросс-платформенное явление.
я думал от смеху помру! Вот она трезвость мышления! Ос не виновата, что у неё такие пользователи.
-- 2 ненужно 0% — нет линукса 1% — есть линукса 1,1% — перебор линукса