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 - он в некоторых сферах еще и конкурировал более успешно!

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

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

Паскаль и дельфи по факту плохие языки. C# лучше него во всем.

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

По какому факту?

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

Поищи в гугле, если уж сам не имел дело с этими тремя языками.

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

Долбоебский ответ от пиздобола, который может только пальцы гнуть.

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

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


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

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

Баааа, да ты специалист. А зачем мне что-то объяснять долбоебу, который может только пиздеть?

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

Да, я вообще красавчик, даже диплом во о программировании есть.

0
Автор поста оценил этот комментарий

Ну вы приведите хотя бы пару фактов. Я знаю все эти три языка, в отличие от вас, по этому и интересуюсь, чем именно Delphi хуже C#. Именно Delphi, а не Pascal, потому что Pascal это предок Delphi, а не альтернативный язык.

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

var в дельфи нет.


Синтаксис сделан так, что приходится много лишнего писать.


Ну и если ты знаешь оба языка, то напиши на них просто класс с 2 динамическими массивами int64 в нем. А потом создай зкземпляр и добавь 2 объекта в один массив и 3 в другой Ну и сравни сколько пришлось написать в шарпе, а сколько в дельфи.

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

Лол что? var нет в Delphi? Серьезно?

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

В том значении, что в шарпе нету. https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-...

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

var i := 1;
var s := 'text';


Это есть, если что. И называется это - выведение типов

0
Автор поста оценил этот комментарий

Пиши на шарпе, жду

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

В твоем коде нет Free для созданного объекта. Где тот самый try finnaly free? Или ты забил на утечки памяти? https://docwiki.embarcadero.com/CodeExamples/Athens/en/SaveP...

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

Напишу в конце MyObj.Free;
Или после создания напишу defer(MyObj);
Или наследую от TComponent и укажу владельца
Или наследую от интерфейсного объекта и он сам уничтожится


В любом случае, (кроме TComponent) это не больше одной строки.


Ну так что не так с Делфи? Нет тормозного и ущербного сборщика мусора?

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

Строго говоря, вы действительно не освободили переменные.

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

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Здесь одна переменная (один объект) и я намеренно не указал освобождение объекта. Это не законченый код, а реализация именно того, что там попросили написать.
В данном случае, я бы написал
var MyObj := TMyClass.Create;
defer(MyObj);
...остальной код
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, я погуглил, что означает слово defer. Видимо, так будет работать. Не уверен, насколько хороша такая практика. Но не буду спорить.

Автор поста оценил этот комментарий

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

раскрыть ветку (13)
0
Автор поста оценил этот комментарий
Это глупость. Это так не работает. Никто не создаёт объекты и тут же удаляет. Это бессмысленно.
Ты можешь полюбоваться моим кодом тут. Там много кода. Много разных размеров проектов.
https://github.com/HemulGM
раскрыть ветку (12)
0
Автор поста оценил этот комментарий

Ну, созданные объекты когда-то же должны удаляться?

И если вы это хорошо знаете - то у вас должен быть такой механизм задействован "на автомате". Но пока его не видно.

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

Это действительно не так просто. И недаром после изучения C# дельфисты говорят, что автоматическая сборка мусора - это, оказывается, удобно!

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

Дану, никто. А как же ты?


Client.SendMessageToChat(u.CallbackQuery.Message.Chat.Id, 'Погода збс!').Free;


Создал, и сразу удалил, даже не посмотрев, что там пришло.

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

Ну, вы тут вообще-то перескакиваете на другую тему.

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

И товарищ продемонстрировал, что это можно.

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

Ошибся я, видимо в новых версиях разрешили var сувать куда хочется.

0
Автор поста оценил этот комментарий

А обосновать свое мнение вы можете? Или только материться на тех, кто спрашивает обоснования?

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

Ну так я общаюсь также, как со мной. И где это я матерился тут?


В паскале все переменные нужно объявить в начале функции. Дале временные i, j для циклов. В дельфи тоже самое.


И в паскале и в дельфи всей памятью всегда нужно управлять вручную. Когда в том же шарпе есть GC. Как оно эпично течь начинает в хоть сколько то сложных проектах...


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

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

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


Управление памятью - в смысле, освобождение динамических переменных?

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

И типовой паскалевский способ использования динамической переменной создание в блоке Try - освобождение в Finally - в C# используется для всех переменных, использующих какие-то ресурсы, типа графических средств, или транзакций в БД, и т.п.


Так что вряд ли стоит оценивать язык, сделанный почти полвека назад, по современным реалиям.

А что в C# много такого, чего в Паскале не было - да, вы правы. Ну, так когда Паскаль делали, некоторых вещей еще в проекте не было.

Так что скорей Паскаль просто устарел. Но у меня вот язык не повернется называть его плохим языком.

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

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


Управлять памятью в шарпе ненадо, никак. Сам язык говорит, что всё выделенное удалится когда станет ненужно. Памяти оно больше занимает конечно, но плюс пять десять процентов за удобство приемлемая цена. Ну и памяти оно больше занимает не совсем от GC а ещё по иным причинам.


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


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


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


Паскаль то устарел, но дельфи то продолжает разработку. Но при этом там и не пытаются исправить язык.


Дельфи так и остался кривым языком. Синтаксис избыточен и всячески мешает. Логика управления памятью так и не склонилась ни к ГК, ни к РАИИ, по итогу вручную возиться постоянно. Оптимизацию так и не завезли. Разрабы неосилили прикрутить LLVM. Ах да, ещё язык ПЛАТНЫЙ, я знатно охренел с этого.


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

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества