ColdFusion — редкий и важный язык программирования

Это были лихие девя­но­стые, тех­но­ло­гии веба зарож­да­лись как мог­ли. Тогда сай­ты выгля­де­ли намно­го про­ще и чаще все­го были про­сто ста­тич­ны­ми HTML-файлами: читать текст и смот­реть кар­тин­ки мож­но, а вот запу­стить соци­аль­ную сеть — вряд ли. Так было до 1995 года, когда Дже­ре­ми и Джо­зеф Алле­ры реши­ли, что хва­тит это терпеть.

Бра­тья Алле­ры раз­ра­бо­та­ли ColdFusion. С одной сто­ро­ны, это был сер­вер для веб-приложений, с дру­гой — язык раз­мет­ки, что­бы гене­ри­ро­вать стра­ни­цы. Язык сна­ча­ла назва­ли DataBase Markup Language, но поз­же пере­име­но­ва­ли в ColdFusion Markup Language. Как ColdFusion он в ито­ге и стал известен.

👉 На ColdFusion рабо­тал один из наших геро­ев — Антон Лео­нов. Про­чи­тай­те интер­вью о его карьер­ном пути в 25 лет: от мобиль­ных сай­тов до пози­ции ана­ли­ти­ка.

Зачем нужен и в чём особенность

Син­так­сис ColdFusion состо­ит из тегов. Для вёрст­ки исполь­зу­ют стан­дарт­ные теги HTML, а ColdFusion рас­ши­ря­ет его скрип­то­вы­ми тега­ми, кото­рые помо­га­ют полу­чать дан­ные из базы или рабо­тать с пере­мен­ны­ми на сто­роне браузера:

<body>
	<b>Добро пожаловать!</b>
	<!-- Заводим переменную Name со значением «Иван» -->
	<cfset name="Иван">
	<!-- Выводим фразу «Привет, Иван» на экран -->
	<cfoutput>
		Привет, #name
	</cfoutput>
</body>

<body>...</body> и <b>...</b> — теги HTML, а <cfoutput>...</cfoutput> — тег ColdFusion. С помо­щью сим­во­ла # мы обра­ща­ем­ся к пере­мен­ной. Назва­ния всех тегов в ColdFusion начи­на­ют­ся с пре­фик­са cf — так их мож­но отли­чить от тегов HTML. 

ColdFusion уме­ет обра­щать­ся к базе дан­ных с помо­щью sql-запросов:

<cfquery NAME="getTravelerInfo" DATASOURCE="travelers.db">
	SELECT FirstName_traveler, LastName_traveler, Birthday_traveler
	FROM Traveler WHERE EMail_traveler = '#Form.Email#'
</cfquery>

Здесь мы созда­ли запрос getTravelerInfo, кото­рый идёт в базу дан­ных travelers.db, нахо­дит там нуж­но­го поль­зо­ва­те­ля по почте, кото­рую вве­ли в фор­му Form в поле Email. И воз­вра­ща­ет из базы имя, фами­лию и дату рож­де­ния это­го пользователя.

❤️ Если совсем про­сто, то ColdFusion даёт воз­мож­ность встро­ить в HTML спе­ци­аль­ные теги для рабо­ты с база­ми дан­ных и скрип­та­ми. На выхо­де полу­ча­ет­ся про­стой с дру­гим рас­ши­ре­ни­ем — .cfm. В ито­ге мож­но делать дина­мич­ные стра­ни­цы, а не толь­ко выво­дить статику.

Как развивался

В пер­вой вер­сии ColdFusion осо­бо ниче­го не умел. Это был про­сто язык раз­мет­ки, кото­рый мог схо­дить в базу дан­ных, взять из неё какую-то инфор­ма­цию и под­ста­вить в нуж­ное место в HTML-вёрстке.

Со вре­ме­нем появи­лась воз­мож­ность раз­ра­ба­ты­вать поль­зо­ва­тель­ские допол­не­ния к язы­ку. Если раз­ра­бот­чи­ка­ми не хва­та­ло какого-то ком­по­нен­та или тега, они мог­ли напи­сать его само­сто­я­тель­но на C или C++, а поз­же — на Java.

В ColdFusion появи­лась воз­мож­ность писать скрип­ты, похо­жие на JavaScript. Язык уме­ет рабо­тать не толь­ко с дан­ны­ми из базы, но и с инфор­ма­ци­ей, кото­рая хра­нит­ся в Cookie. Напри­мер, мож­но выве­сти на экран вре­мя послед­ней сес­сии пользователя:

Сна­ча­ла зада­дим значение:

<CFCOOKIE NAME="TimeVisited"

  VALUE="#Now()#">

А потом запро­сим его:

<CFOUTPUT>

    Time Visited : #DateFormat("#COOKIE.TimeVisited#")#

</CFOUTPUT>

С каж­дой новой вер­си­ей у сер­ве­ра ColdFusion рос­ли воз­мож­но­сти, а в язы­ке появ­ля­лось всё боль­ше тегов. Так что в кон­це 90-х и нача­ле нуле­вых ColdFusion вовсю при­ме­ня­ли для созда­ния веб-приложений. ColdFusion исполь­зо­ва­ли, напри­мер, таск-менеджер ProWorkflow, сер­вис для сап­пор­та Giva, ERP-система Promisan.

Что сегодня

В 2001 году ком­па­нию Allair при­об­ре­ла Macromedia, кото­рую, в свою оче­редь, в 2005 году купи­ла Adobe. Adobe про­дол­жа­ет под­дер­жи­вать и обнов­лять ColdFusion — послед­ний зна­чи­тель­ный апдейт был в нояб­ре 2020 года. Сего­дня ColdFusion — ком­мер­че­ский про­дукт, сто­и­мость лицен­зии для ком­па­ний начи­на­ет­ся от 2499 долларов.

Adobe нашли для ColdFusion доволь­но узкую нишу: интра­не­ты и сай­ты, для кото­рых важ­но рабо­тать с дан­ны­ми. ColdFusion из короб­ки уме­ет стро­ить гра­фи­ки и созда­вать PDF-файлы, так что его исполь­зу­ют в про­ек­тах, где нуж­но визу­а­ли­зи­ро­вать инфор­ма­цию, напри­мер, сде­лать дэш­борд с дан­ны­ми о продажах.

⚠️ Язык и тех­но­ло­гию в Рос­сии слож­но назвать вос­тре­бо­ван­ны­ми: в кон­це декаб­ря 2020 года на HH.ru все­го три, а на «Хаб­ре» ни одной вакан­сии с упо­ми­на­ни­ем ColdFusion. С нуля сего­дня на нём почти не пишут, но оста­лись про­ек­ты, где его исполь­зу­ют с дав­них вре­мён и пока что поддерживают.

👉 Мы не реко­мен­ду­ем изу­чать ColdFusion как свою первую веб-технологию. Луч­ше посмот­ри­те в сто­ро­ну Python или PHP, а в иде­а­ле для начи­на­ю­щих — JavaScript. Вот ста­тьи, кото­рые вас вдохновят:

Вме­сте с тем в раз­ное вре­мя ColdFusion исполь­зо­ва­ли в Bank of America, Cisco, eBay, Boeing. Из оте­че­ствен­ных ком­па­ний — Лабо­ра­то­рия Кас­пер­ско­го. Как раз там герой наше­го интер­вью Антон Лео­нов раз­ра­ба­ты­вал B2B-платформу на ColdFusion. Почи­тай­те, как это было и чем он зани­ма­ет­ся сейчас →

Текст:

Сла­ва Уфимцев

Редак­тор:

Мак­сим Ильяхов

Кор­рек­тор:

Ира Михе­е­ва

Иллю­стра­тор:

Даня Бер­ков­ский

Вёрст­ка:

Маша Дро­но­ва

Соц­се­ти:

Олег Веш­кур­цев

Олды:

здесь