2402

Как Borland просрали все полимеры2

В 90-е годы это название знали все. Даже те, кто не пользовался Паскалем. В течение почти 20 лет Турбо Паскаль преподавали в школах и техникумах, иногда в институтах.
Как минимум полтора десятка лет другой их продукт - Delphi - был одной из самых известных и популярных у нас в России сред разработки. И, кстати, живет до сих пор.

Как же получилось так, что фирма, создавшая два, можно сказать, революционных продукта - исчезла без следа? Я расскажу свою версию. С моей точки зрения, это рассказ о роли личности руководителя в судьбе фирмы.

Моя первая встреча с Turbo Pascal

Я впервые увидел Turbo Pascal 5.0. в 1989 году, на первой “своей” IBM PC XT. Тогда для меня это было что-то на грани чуда.

Ведь как в те времена делалось "в норме":

  1. Запускаем текстовый редактор и пишем/правим текст программы.
    Сохраняем, закрываем редактор.

  2. Запускаем транслятор (сейчас говорят компилятор), указывая в виде аргумента файл с текстом программы.
    Если в программе нет ошибок - получаем так называемый объектный модуль, содержащий алгоритмы нашей программы в машинных кодах, но без привязки к адресам в памяти.

  3. Запускаем линкер (редактор связей), указывая ему файл(ы) с объектными модулями, он собирает их в готовую программу, устанавливая адреса для каждой переменной и каждой подпрограммы, и указывая эти адреса там, где эти объекты вызываются.
    Теперь программу можно запустить на выполнение.

  4. Запускаем программу, проверяем, как она работает.

Ну, если работает не так - понятное дело, правим. Т.е. повторяем весь цирк сначала.
А чаще всего уже на шаге 2 сталкиваемся с тем, что транслятор обнаруживает ошибки в тексте, и выдает в отдельный файл - в строке ХХХ у вас какая-то фигня, а в строке YYY нет точки с запятой. И теперь надо открыть редактор, найти эту строку, и исправить ее.

Запустив Турбо-Паскаль, ты работаешь в текстовом редакторе. И не выходя из него, можешь нажать одну клавишу - чтоб программа откомпилировалась и запустилась.
Завершив прогон программы - возвращаешься в редактор.

Так выглядела среда разработки Turbo Pascal 5.0

Так выглядела среда разработки Turbo Pascal 5.0

Если у тебя в тексте программы что-то не так - тебе не сообщают об этом. Не заставляют искать в тексте ту ошибочную строку. Тебя сразу автоматически отправляют на ту строку, где ошибка, остается только исправить ее.
В общем, если до этого задача “скомпилировать написанную программу” занимала неделю, то теперь это делалось за два часа.

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

В общем, на фоне привычных компиляторов Турбо Паскаль смотрелся как пулемет Максима среди дульнозарядных мушкетов. И было понятно, почему его так назвали. Также понятно, почему он получил такую популярность у начинающих программистов, а также преподавателей и студентов.

За его скорость и удобство ему можно было бы простить многое - даже если бы это был “игрушечный” компилятор, способный откомпилировать и собрать только маленькую учебную программу - популярность была бы ему обеспечена. А уж если этот инструмент мог создавать более-менее крупные программы с приличным качеством - его производитель, наверное, должен был бы озолотиться? Ну, давайте познакомимся с теми, кто это сделал.

1981 Основание фирмы Borland

Сама фирма началась с того, что в 1981 Нильс Енсен (Niels Jensen), Оле Хенриксен (Ole Henriksen) и Моргенс Глад (Mogens Glad)  основали компанию MIT - Market In Time.
Чем именно они будут заниматься - парни и сами пока не знали, они просто верили в персональные компьютеры, в свои силы и в свою удачу. И поначалу они просто писали программы для малых машин под управлением ОС CP/M.

В 1982 они посетили выставку CP/M-82, проходившую в Сан-Франциско. И сделали вывод, что если они хотят продавать свои программы в США - им надо иметь американскую компанию, располагающуюся в США, а не в Ирландии.

Кан-варвар из дикого леса

А еще они познакомились с Филиппом Каном. Который в то время имел хулиганские склонности, ездил на мотоцикле, играл на саксофоне, имел высшее образование в области математики и оконченную консерваторию, жил в США нелегально, поскольку не имел грин-карты… Зато он очень хорошо представлял, чем он хочет заняться для того, чтоб заработать денег.
Так что наши три датчанина приняли его в свою фирму. И саму фирму переназвали. Вроде как именно Кан предложил название Borland, означавшее на кельтском “лесная страна”.

Надо сказать, Кан всегда отличался любовью к неординарным решениям на грани хулиганства, к нарушению правил, что с одной стороны осложняло его взаимодействие с другими владельцами фирмы, с другой стороны часто обеспечивало успех его начинаниям.

Филипп Кан. В виде исключения, без мотоцикла и в костюме

Филипп Кан. В виде исключения, без мотоцикла и в костюме

Одна из статей о нем (к тому времени уже директоре Борланда, богатом и знаменитом) так и называлась - “Кан-Варвар” (Kahn the Barbarian).

Доли капитала в Borland были распределены так: Niels Jensen (250,000 акций), Ole Henriksen (160,000), Mogens Glad (100,000), and Kahn (80,000). Т.е. вроде как младший партнер. Филипп Кан становится президентом и генеральным директором (CEO) фирмы Borland, и в этой должности он будет 12 лет, до 1995.

1983 Появление Turbo Pascal

А идея у Кана была, собственно, в том, чтоб сделать удобную среду разработки. И еще хотелось быстрый компилятор, чтоб не приходилось идти курить, пока он пережевывает текст твоей программы.
В сущности, тут вроде ничего нового или революционного не было. Эта идея носилась в воздухе. Да, собственно, уже существовавший к тому времени Бейсик можно считать воплощением этой идеи. Но у Кана это действительно получилось, и получилось так хорошо, что его вариант стал по сути образцом для всех будущих.

Итак, в 1982 Кан начинает двигать свое направление, и находит талантливого программиста, тоже увлеченного этой идеей. А самое главное - этот программист уже сделал свою версию компилятора Паскаля под ОС CP/M. Теперь они начинаю делать Паскаль под MS DOS, и не просто компилятор, а именно среду разработки. И в 1983 у них выходит первая версия.

1982 В Borland приходит Андерс Хейлсберг (Anders Hejlsberg), разработчик Blue Label Pascal.

Андерс Хейлсберг, разработчик Turbo Pascal

Андерс Хейлсберг, разработчик Turbo Pascal

1983 Выпущена первая версия Turbo Pascal.

Название хорошо отражает основную суть. Компилятор был очень быстрым. У нормальных людей компиляция программы занимала от 5 минут до получаса, в Турбо Паскале же компиляция занимала не более 5 секунд. Надо сказать, Борланд всегда отличалась меткими названиями.

Новый продукт предполагалось продавать учебным заведениям. По недорогой цене. $49.99. При стоимости нормальных профессиональных компиляторов порядка $300.

Емкость рынка в первом приближении оценивалась в 30 000 потенциальных покупателей. Ну, т.е. если все они купят новую программу, то фирма получит полтора миллиона долларов. В реальности, естественно, купят далеко не все.

В реальности в первый месяц продаж Борланд набрал 3000 покупателей. Соответственно, 150 000 долларов.
Местные банки даже стали отказываться оплачивать чеки и кредитные карточки, подозревая компанию в мошенничестве.

Через два года (1985) журнал Байт сообщил о “поразительной для компьютерного языка цифре” в 250 000 экземпляров. (Т.е. в 8 раз больше максимальной первоначальной оценки!)
Это 12 с половиной миллионов долларов. Определенно, это был оглушительный успех!
Еще через полгода цифры достигли 400 000 проданных экземпляров и, соответственно, 20 миллионов долларов.

1985-1990 Рост и развитие

Последующие годы фирма активно развивает направление средств разработки. Появляются несколько языков со знакомой средой разработки - Turbo Basic, Turbo Assembler, Modula 2, Turbo Prolog, Turbo C (позже Borland C).
Идет активное соревнование с Microsoft в этой области, до середины 90-х.

В 1990-92 в Паскале появляется объектно-ориентированное программирование. И следом - объектно-ориентированная библиотека Turbo Vision, предназначенная для разработки современных (на то время) программ с окнами, меню, контекстной гипертекстовой подсказкой и т.д.

В Turbo Vision содержится красивая стройная концепция управления окнами, элементами окна, проверки вводимых в окно данных, взаимодействия элементов. В результате разработка таких программ становится намного проще и быстрее. В то же время сам Turbo Vision мог служить прекрасным примером - что такое ООП, зачем оно нужно, и как его применять. Многие программисты на нем учились, несколько программистов пытались сделать из него графический пакет. Одна из крупнейших программистских фирм нашего города продолжала писать программы с использованием Turbo Vision аж до начала 2000-х, когда уже всюду стоял Windows.

Cобственно, на том же Turbo Vision была сделана новая интегрированная среда Turbo Pascal 6.0. Это характерный для Borland подход - самим пользоваться тем, что они разрабатывают на продажу. При таком подходе продукт действительно получается удобным и качественным, потому что разработчик сам видит, что в его изделии удобно, а что можно улучшить, и он же имеет все средства чтоб улучшить его. Наверное, именно поэтому все продукты Борланда отличаются высоким качеством и удобством.

Кроме того, развиваются еще несколько продуктов совершенно других направлений:
Eureca - пакет для решения дифференциальных уравнений;
SideKick - нечто вроде пакета офисных программ, включая текстовый редактор, календарь, калькулятор, адресную книгу и телефонный номеронабиратель;
Quattro Pro - электронная таблица.

Похоже, что руководители фирмы, заработав на Турбо Паскале, хотят вложить эти деньги в развитие, и пытаются развивать любое направление, потенциально сулящее перспективы. Вот только не могут выбрать - в каком именно направлении развиваться? - и пытаются развиваться во всех направлениях одновременно.

Конкурируют с Microsoft в области языков разработки. Надо сказать, достаточно успешно. Аж до конца 90-х. (И даже, пожалуй, до конца 2000х, но это уже другая история.)

Осваивают область разработки баз данных, в которой на то время катастрофически не хватает нормальных языков разработки алгоритмов и весьма бедно по части средств ввода данных. Тут Борланд предпринимает несколько крупных шагов, невзирая на затраты.

Приобретается Ansa Software и ее СУБД Paradox. Через некоторое время появляется выделенный пакет библиотечных функций Paradox Engine, который можно использовать для работы с Парадоксовскими таблицами из программ на C и Паскале.

В 1991 покупается Ashton-Tate - производитель знаменитого DBase. А значит, надо либо как-то объединить эти два продукта - DBase и Paradox - в одну концепцию, либо они будут конкурировать между собой, съедая деньги фирмы.

(Помимо этого, Ashton-Tate на тот момент владеет еще одной СУБД - InterBase, это уже полноценный сервер баз данных, работающий в клиент-серверной архитектуре, поддерживающий большие СУБД и способный на тот момент конкурировать с недавно появившимся MS SQL Server. Но работать с ним надо уже принципиально по-другому, не так, как с DBase и Paradox: если первым надо давать команды типа “перейди на следующую запись”, “удали запись”, “прочитай поле Х текущей записи” и т.п. - то взаимодействие с InterBase полностью основано на отправке SQL-запросов, которые уже выполняются этим сервером БД, при необходимости посылая в ответ небольшую порцию данных. Т.е. совсем другая логика построения программы, другие возможности. Можно сказать, что DBase и Paradox - это “игрушечные” СУБД, упрощенно реализующие функции работы с таблицами на уровне файлов; InterBase же - уже вполне “взрослая” СУБД, работающая по современным стандартам и сравнимая по возможностям с ведущими на то время Oracle, DB/2, и пытающимся дотянуться до них MS SQL Server.)

Кан пытается объединить направление языков разработки и направление баз данных, команду Turbo и команду DBase, но это ему не удается. Слишком разные команды, слишком много людей, слишком много функционала нужно объединить и привести к какому-то общему знаменателю. Это в конце концов приводит к финансовым проблемам и вынужденным сокращениям персонала в начале 90-х.

Microsoft же активно включается и в это соревнование, приобретя Fox Software и его Fox Pro - клон DBase, который он далее много лет развивает. (Параллельно разрабатывая MS SQL Server и MS Access)
В общем, в области разработки СУБД у них идет конкуренция, сравнимая с Курской Дугой…

А еще один фронт конкуренции разворачивается в области офисных пакетов. Microsoft начинает продвигать свой MS Office. Borland заключает соглашение с Word Perfect и начинает разработку и продвижение Borland Office, включающих в себя текстовый процессор Word Perfect и электронную таблицу Quattro Pro.

Надо сказать, меня удивляет то, что Borland, при несопоставимости размеров, мало того что конкурировал с Microsoft - он в некоторых сферах еще и конкурировал более успешно!

(продолжение следует)

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

В 98-м академик Хеннер, преподавая у нас на тот момент уже (при всем уважении) трупо-Паскаль, главным его преимуществом обозначал отсутствие команды GOTO.

Все хотел его спросить чем по сути вызов процедуры отличается от

GOTO <строка>

команды

GOTO <строка назад>

раскрыть ветку (25)
0
Автор поста оценил этот комментарий

Проблема GOTO не в том что с ним невозможно писать нормально. Проблема в том, что сложно научиться писать нормально, когда еще не умеешь)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
С одной стороны, вроде я тогда им мало пользовался. С другой, я спустя некоторое время активно писал на php, так что по прошествии лет могу и приврать себе какой я был умный
Автор поста оценил этот комментарий

И как ты по GOTO <строка назад> вернешься в точку вызова?

Или ты предполагаешь, что вызов будет всегда из одной точки?

раскрыть ветку (22)
0
Автор поста оценил этот комментарий

В спектрумовском бейсике для этого был GOSUB - запоминал место перехода и потом можно было вернуться обратно по RETURN.

раскрыть ветку (11)
1
Автор поста оценил этот комментарий

GOSUB - это типа GOto SUBroutine?

Ну да, а return - стандартный выход, в общем то.

Просто по другому написано, обычно вызов функции делается по ее имени, что, по большому счету, правильнее.


Да и разговор был про goto...

раскрыть ветку (10)
0
Автор поста оценил этот комментарий

Но в спектруме не было функций, поэтому вот так, по номеру строки.


А про goto, ну в целом на нем можно реализовать и gosub, и другие управляющие конструкции, но немного через жопу. Поэтому вот даже в примитивном спектруме были gosub и for.


Но что бы их реализовать - надо знать что они вообще существуют, и как они работают. Поэтому язык, в котором нет goto, но есть все то, для чего его обычно используют - отличный вариант для обучения.

раскрыть ветку (9)
0
Автор поста оценил этот комментарий

Ну, через жопу настолько много можно легко сделать, что оно часто через нее и делается...


А так... Если не было функций - то откуда тогда return?

Ну, обзовем замаскированной функцией :)

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

Ну это ж Бейсик, в его простейшем виде - сплошной листинг, только номера строк, только хардкор! Вот вроде и функции даже есть, но ни параметры передать, ни результат получить, все через глобальные переменные (а других-то и нет, ага).


Собственно оттуда и растут ноги у "правила хорошего тона" что в функцию должен быть только один вход. Сейчас, когда функции по имени вызываются, это звучит странно, а тогда можно было запрыгивать и в середину "функции")

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

Примитив, зато понятен большинству тех, кто не то что в ООП не разберется - он и понятие процедуры/функции не поймет.

Чисто школьная штука.


Лет 30-35 назад была у меня среди прочего вот такая, как на картинке, книжка - был удивлен, что это продается до сих пор.

Взял, собственно говоря, чисто из за описания языка Ада - тогда он только начинался фактически и литературы по нему не было, было интересно узнать хоть что-то.

И вот в этой книжке один из авторов то ли сам написал, то ли кого то процитировал, но про си написал примерно так: создается впечатление, что в языке си за каждую конструкцию с разработчика просили 10 баксов, и еще 5 - за каждый лишний символ.

И я его где то даже понимаю :)

Иллюстрация к комментарию
раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Надо было и дальше брать. И даже больше. А то стандарт С++ уже 1500 страниц)

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

В те времена я каждую неделю заходил в несколько книжных магазинов и покупал почти все книги, касающиеся программирования.

Хотя я не программист, я железячник, но вот как то нравилось мне это.


И, главное - тогдашний начальник мои эти поползновения отлично понимал и поддерживал.

Нужно было однажды что-то купить для работы, рядом с книжным - купил, зашел в книжный, а там - толстенная, на полтыщи страниц, наверное, книга по дельфи.

Полистал - а хорошо написано.

800 рублей - это когда у меня зарплата... не помню, но не десятками тысяч измерялась.

Взял.

Начальник увидел:

- Откуда?

- Купил.

- Сколько?

- 800

- На.


Вообще - тогда как то было интереснее жить, правда, я тогда и моложе был :)

Как то взял тоненькую дешевенькую книжку, я уже не помню название этой брошюры, только помню, что синенькая :)

И были там примеры простых алгоритмов на все случаи жизни, от калькулятора на бейсике до алгоритмов сортировки не помню на чем.


Но запомнился мне особо один алгоритм, точнее - факт его присутствия в книге, алгоритма, к сожалению, не помню: бессловарная расстановка переносов.

А как раз время было, когда печатали все подряд, чего мало печатали до этого: фантастика, детективы, в основном - переводные тогда еще.

А вот на редакторах и корректорах сильно экономили.

Как пример - как вам перенос слова полиция в виде пол-иция?

И таких было до хрена.

А алгоритм, повторюсь, был простой - несколько условий.

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


А сейчас - пытался даже искать как то, не нашел...

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Повезло вам с начальником, завидую )

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я бы добавил, что сейчас программирование как дисциплина оперирует такими понятиями, как инициализация, завершение, обработка ошибки, и т.п.

И в этой связи становится понятным требование, что вход в функцию не должен производиться после операторов инициализации (если они там есть), а то фигня получится; или что выход из функции должен обязательно вызывать операторы завершения.

Ну, собственно, в современных языках уже и специальные служебные слова и операторы для этого есть, типа catch и всяких finally.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ага, теперь изредка на чистом Си только нужен бывает, что бы выход нормально реализовать.


Да и современный goto стал более ограниченным и не позволяет творить всю ту грязь что раньше)

0
Автор поста оценил этот комментарий
После, допустим, сороковой строки пишем GOTO <какая-нибудь 500> и там в конце блока пишем GOTO 41
раскрыть ветку (9)
1
Автор поста оценил этот комментарий

А если мне нужно вызвать все это не только в сороковой строке, но еще и в сто сороковой и еще в десятке мест?

А потом, при правке программы, я в тридцатой строке добавлю еще одну строку - ну забыл сразу, склероз - мне еще лезть и править GOTO 41 на GOTO 42?

Кстати, после сороковой строки идет сорок первая, в которой ты и предлагаешь сделать GOTO 500, поэтому в результате GOTO 41 ты получишь рекурсию...

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

Ну, про многократное обращение я как-то не подумал.

Но тогда было сказано, что у Бейсика есть другая засада: разные интерпретаторы могут в некоторых случаях по-разному отрабатывать очередность команд в циклах. И это уже критично

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

Про такое даже не слышал, честно говоря.

Но я про многое не слышал...

раскрыть ветку (6)
0
Автор поста оценил этот комментарий
Это было на той же лекции сказано. В цикле for I разные интерпретаторы могут добавлять I перед действиями или после.
раскрыть ветку (5)
0
Автор поста оценил этот комментарий

FOR I=1 TO 10

Не представляю, что тут может интерпретатор неправильно понять.

Вроде явно сказано, что для I от 1 и до 10, включая 10.

То есть ровно 10 раз.

И I, по идее, должно изменяться в момент выполнения оператора NEXT I, потому как никто не запрещает использовать переменную цикла в качестве значения для вычислений чего то там в цикле.

И пока цикл не закончен - нехрен ее менять.

Если не так - то нахрен нужен такой интерпретатор?

раскрыть ветку (4)
0
Автор поста оценил этот комментарий
Вот в этом и была указана проблема.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, кривой интерпретатор и я могу написать, наверное...

0
Автор поста оценил этот комментарий
Я склонен думать, что причина была в том, что интерпретаторы для Бейсика писал кто попало, руководствуясь своим пониманием процесса.
Турбо-Паскаль же, если мне не изменяет память, был один
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я на бейсике особо не писал, если не считать квейсика - это тот же бейсик, только компилятор, там таких проблем не было, хотя был самописный - его в каком то НИИ химическом вроде написали, для своих целей.

Ну и лабу в институте однажды на бейсике сделал, вообще то ее надо было делать на АП Наири, но после того, как мне одна и та же программа дала три разных результата при трех запусках, с разрешения препода пересел на электронику-60 и спокойно все сделал на бейсике.

И вот на чистом бейсике - это моя единственная программа в жизни, если не склероз...

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества