catpad: (Default)
catpad ([personal profile] catpad) wrote2007-05-31 05:59 pm

Online IDE

Да, вот ещё напишу, пока не забыл.
Раз уж всё сейчас online, то и программировать нужно тоже начинать online.
А именно, идёшь на сайт Online Java IDE или Online C++ IDE или что угодно ещё, создаешь там проект и начинаешь добавлять файлы, то есть страницы. Естественно, редактор поддерживает syntax highlighting, code completion и все остальные удобные вещи. Можно указать, какие именно библиотеки нужны для линковки, если что-то недоступно - загружаешь сам. Там же кнопочка "скомпилировать". Что делать дальше, пока ясно не совсем. Скорее всего, должно выделяться некоторое место на виртуальном диске, с которым можно работать как со своим собственным. Если это консольная программа, то тут всё просто. Если же это GUI или ещё что-то очень сложное, то тут можно просто загрузить себе на компьютер получившийся executable.
Зачем это нужно ? Очень просто: во-первых, проекты никогда не будут теряться. Тут же и source control, конечно, чтобы несколько человек могли работать над одним проектом, и сохранение версий. Во-вторых, проект можно объявить public, сделав его, таким образом, open source, так, чтобы над ним тут же (не сходя с этой страницы) могли работать другие люди.
В-третьих, часто бывает, что какая-то среда не установлена на компьютере, или устанавливать её не хочется ради какого-то одного небольшого проекта. Или вот, скажем, я хочу попробовать написать программу на Haskell'e или на ещё на чём-то для пробы, а устанавливать компилятор не хочу. Вообще, как известно, одно из больших препятствий, когда начинаешь программировать на новом языке - это установка среды и попытки разобраться с компилятором. А тут волшебный сайт будет сам всё за тебя делать - только знай, пиши программы.
Или кто-то находится дома, а ему нужно срочно внести изменения в проект - тоже вариант.

Кроме этого, к таким проектам можно тут же приделать все современные веб-штуки: дискуссии, комментарии, вики-страницы, notes, links - что угодно. Как было бы здорово, чтобы прямо на странице с кодом были бы комментарии и обсуждения, советы, ссылки на какие-нибудь статьи и книги и т.п. И конечно же, чтобы работал обычный гипертекст - чтобы, например, нажав на вызов функции, можно было перейти к её определению и всё остальное, что обычно работает в таких случаях.
Вот, вот чем нужно заниматься стартапам!

[identity profile] golubovsky.livejournal.com 2007-05-31 04:00 pm (UTC)(link)
Касательно Haskell: Существует суб-проект в рамках York Haskell Compiler - Yhc Javascript Backend (http://haskell.org/haskellwiki/Yhc/Javascript) как раз направленный на то, чтобы исполнять Haskell программы в браузере. Если Вас это интересует - присоединяйтесь ;) На самом деле идея неплоха - могло бы получиться для начала что-то типа TryRuby - TryHaskell. Просто слишком мало народа над этим работает... :( Пока... ;)

[identity profile] catpad.livejournal.com 2007-06-01 12:50 am (UTC)(link)
К сожалению, вряд ли я вам тут помогу, потому что не знаю ни Haskell, ни JavaScript. Первый хочу изучить, а второй не хочу знать из принципа, потому что это гадость какая-то. А вообще, если год назад я бы и задумался над такими вещами, то сейчас - увы - завален работой.

[identity profile] golubovsky.livejournal.com 2007-06-01 02:52 am (UTC)(link)
Ну как раз идея этого проекта состояла в том, чтобы выучить первое, и не надо было бы учить второго ;)

[identity profile] migmit.livejournal.com 2007-06-01 08:03 am (UTC)(link)
Напрасно. JavaScript - близкий родственник Лиспа, императивный язык с весьма развитыми функциональными возможностями и элементами метапрограммирования (правда, ран-тайм, ибо язык интерпретируемый).

[identity profile] catpad.livejournal.com 2007-06-01 08:19 am (UTC)(link)
Странно. Я, конечно, очень давно его видел, но помню, что он мне очень не понравился. Да и репутация у него как-то не очень...

Re: Reply to your comment...

[identity profile] migmit.livejournal.com 2007-06-01 08:33 am (UTC)(link)
Для примера:
Array.map = function (f){
  var result = [];
  for (var i = 0; i < this.length; i++){
    result.push(f(this[i]));
  }
  return result;
}

Пишем такое (один раз), после чего используем:
[1,2,3,4,5,6,7,8,9,10].map(function(x){return x*x})

Возвращает [1,4,9,16,25,36,49,64,81,100]
То есть, 1) ко ВСЕМ массивам добавили новый метод, и 2) этот метод принимает лямбду (которая здесь пишется как function(){}).
Я уж не говорю про фокусы типа ["apple","orange","huinja"][[1,4,9].indexOf(4)]

Re: Reply to your comment...

[identity profile] catpad.livejournal.com 2007-06-01 08:58 am (UTC)(link)
Спасибо!
Вы возродили мой интерес к JavaScript'у. Может, в свободное время изучу, всё-таки в наше время это один из важнейших языков, как ни крути.

Re[2]: Reply to your comment...

[identity profile] migmit.livejournal.com 2007-06-01 09:11 am (UTC)(link)
Рад был помочь.