Online IDE

May. 31st, 2007 05:59 pm
catpad: (Default)
[personal profile] catpad

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

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

Date: 2007-05-31 11:57 am (UTC)
From: [identity profile] shmel39.livejournal.com
Ой не надо! Я как себе представлю online Eclipse мне страшно становится.

Date: 2007-05-31 01:03 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
А чем это отличается от Эклипса, кот. подкачивет необходимые плагины (e.g. компилятор Хаскеля) и работает против удаленного subverison'а ? Ведь не обязательно же в браузере программировать.

Date: 2007-05-31 01:09 pm (UTC)
From: [identity profile] catpad.livejournal.com
Эклипс надо устанавливать, надо настраивать subverison, и всё равно всё это рано или поздно теряется.
В браузере можно программировать откуда угодно, сотрудничать с кем угодно и хранить файлы "в интернете" всегда.

Date: 2007-05-31 01:58 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Наверное. Я только не уверен, что аппликация должна бежать именно в браузере. Может, в браузерном плагине ? Причем плагин будет позволять работать offline и синхронизироваться с удаленным репозитарием, когда нужно. Типа как google gear.

Date: 2007-05-31 02:05 pm (UTC)
From: [identity profile] catpad.livejournal.com
Ну да, можно и так.

Date: 2007-05-31 02:36 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
А учитывая, что эклипс на джаве все-таки написан, это все должно быть чем-то вроде аплета.

Date: 2007-05-31 03:06 pm (UTC)
From: [identity profile] boffin.livejournal.com
Ага.
IDE 2.0 типа.
Также программисты голосуют за код друг-друга + сайт анализирует названия используемых функций и в соответствии с этим даёт рекоммендации какие функции ещё использовать :)

А если серъёзно, то где-то я видел PHP IDE онлайн.

Date: 2007-06-01 12:52 am (UTC)
From: [identity profile] catpad.livejournal.com
А по-моему, рекомендации на основе анализа используемых функций - это очень даже серьёзно. Ведь есть же Google Code и ещё разные другие поисковые вещи - почему бы не делать это всё автоматически. Пишешь код и параллельно смотришь, что в этих ситуациях делали другие. Очень полезно.

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

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

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

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

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

Re: Reply to your comment...

Date: 2007-06-01 08:33 am (UTC)
From: [identity profile] migmit.livejournal.com
Для примера:
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...

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

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

Date: 2007-06-01 09:11 am (UTC)
From: [identity profile] migmit.livejournal.com
Рад был помочь.
From: [identity profile] yatur.livejournal.com
Эволюция, как известно, идет по спирали.
Сначало были огромные машины-залы и прямой доступ к ним через перфокарты (smart client).
Потом были терминалы (thin client).
Потом были писишки (smart client).
Потом - браузеры (thin client)
Теперь вот - опять smart client. Потому что рост мощностей железа замедлился и 100 средних писишек (вместе взятые) стоят на порядки дешевле одного супер-сервера, равного им (вместе взятым) по мощности. Т.к. при thin client'е бОльшая часть нагрузки падает на сервер, при сколь-нибудь сложных задачах он плохо масштабируется на большое число пользователей. При 10 одновременно работающих программистах средний современный сервер будет чувствовать себя плохо, а при 100 - просто загнется.

From: [identity profile] mikkim08.livejournal.com
Про спираль.

1) Сначала программы обмениваются тупо данными, а presentation logic (в гуевом клиенте, скажем) -- hard-coded: всякие клиент-сервер аппликации

2) Потом в протокол обмена добавляются мета-данные, описываюшие presentation, а клиент становится "универсальным": Browser/HTML

3) Возможности мета-данных оказываются недостаточными (а клиентские машины стали мощнее) и к мета-данным подмешивается язык для прораммирования presentation logic: DHTML с javascript'ом

Какой следующий этап ? Возвращение к (1) на новом этапе.

Интересно, что похожий процесс происходил в полиграфии: сначала полностью проприетарные системы, потом появления постскрипта, а потом pdf.
From: [identity profile] yatur.livejournal.com
Ну, насчет того, что было "сначала" я бы поспорил. "Сначала" вообще никто ни с кем не обменивался - перфокарта на входе, печатный текст на выходе, вот и все presentation logic.
From: [identity profile] mikkim08.livejournal.com
Может быть. А чего мы хотим ? Я лично хочу увиедть/угадать тенденцию. Вот какой smart client, по-Вашему, сейчас нужен ?
Page generated Jun. 18th, 2025 06:36 am
Powered by Dreamwidth Studios