Что Kylix делал неправильно? [закрытый]

Он - код, который я использовал. В подходе я использовал python для очистки перед переходом к HQL-запросам. Таким образом, после выполнения некоторых шагов спора, у меня есть файл как этот ниже (сохраненный без indices и headers) в моей локальной файловой системе, так как это небольшой файл:

import pandas as pd
import numpy as np 

    Name  devicename number
0  David  SMARTPHONE      6
1           COMPUTER      3
2             LAPTOP      1

Затем временная таблица [ 116] создается и заполняется данными из LFS или HDFS:

create table tempt
(
name       string,
devicename string,
number     int
)
row format delimited 
FIELDS TERMINATED BY ',';
load data local inpath '/path_to_file' overwrite into table tempt;

select * from tempt;
+--------------------+--------------------------+----------------------+--+
| tempt.name         | tempt.devicename         | tempt.number         |
+--------------------+--------------------------+----------------------+--+
| David              | SMARTPHONE               | 6                    |
|                    | COMPUTER                 | 3                    |
|                    | LAPTOP                   | 1                    |
+--------------------+--------------------------+----------------------+--+

А теперь

Insert overwrite table user_device
select name,
array(named_struct("devicename",devicename,"number",number)) from tempt;

select * from user_device;

и вывод теперь такой, как вы ожидали.

+-----------------+-------------------------------------------+--+
|user_device.name |            user_device.devices            |
+-----------------+-------------------------------------------+--+
| David           | [{"devicename":"SMARTPHONE","number":6}]  |
|                 | [{"devicename":"COMPUTER","number":3}]    |
|                 | [{"devicename":"LAPTOP","number":1}]      |
+-----------------+-------------------------------------------+--+

Ура!

9
задан 3 revs, 2 users 100% 14 November 2013 в 21:31
поделиться

8 ответов

Что может сделать CodeGear лучше на этот раз:

  • Должен быть более абстрактный способ размещения элементов управления в диалогах, а не основанный на пикселях материал, который теперь использует VCL. Это ломает Windows уже с высокими настройками DPI или нестандартными шрифтами, это будет намного хуже для многоплатформенных программ. Возьмите, например, классы sizer в wxWidgets или классы / менеджеры макетов в GTK, Java или QT - все они намного лучше меняют шрифты или размеры элементов управления. В качестве другого преимущества это прозрачно работает с переведенными текстами в элементах управления, которые короче или длиннее.

  • Делайте библиотеки только Unicode. В идеале должен быть специальный строковый класс, использующий UCS-16 для внутреннего использования в Windows, но UTF-8 для Linux и Mac OS X. Программа должна уметь работать с кодировкой Unicode, встроенной в платформу, не заставляйте иметь преобразования для каждого доступа к файловой системе или вывода на экран. Но, возможно, они уже бросили мяч на этом с изменениями строки Unicode для Delphi 2009.

  • GUI должен использовать встроенные элементы управления на всех платформах, для правильного взгляда и . Это будут стандартные элементы управления в Windows, Cocoa на Mac и в Linux, в идеале он должен использовать GTK или QT, в зависимости от того, является ли рабочий стол GNOME или KDE.

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

9
ответ дан 4 December 2019 в 08:16
поделиться

У Kylix было две вещи, с которыми он работал: широкое распространение Linux на настольных ПК еще не было, а сама Kylix была очень дорогой. Добавьте сомнительное качество Kylix (особенно в первой версии), и вы получите ответ.

Если CodeGear хочет сделать еще одну версию Delphi для Linux, им следует просто взглянуть на Lazarus .

8
ответ дан 4 December 2019 в 08:16
поделиться

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

0
ответ дан 4 December 2019 в 08:16
поделиться

В то время (и до сих пор) я работал над Free Pascal Unix RTL, который делал Pascal на * nix до Kylix, и мы внимательно следили за ним с первой бета-версии. Таким образом, можно сказать, что у меня была хорошая и уникальная точка зрения на взлет и падение Kylix.

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

Хотя были и другие проблемы (Wine, развертывание, поскольку он очень ориентирован на Linux / x86, поэтому его труднее перенести на «следующий» * nix, Borland недостаточно настаивал на этом), я все еще думаю, что тот факт, что Kylix потерпел неудачу, является скорее свидетельством проблем Linux в то время, чем прямым результатом проблем с Kylix. Некоторые из них (например, долгосрочная стабильность двоичного API) до сих пор не исправлены.

Однако, это должно было сработать ИМХО, поскольку оно явно опережало остальных и работало, и если бы спрос действительно был, люди бы активизировались (а у некоторых есть, мы все равно получаем ежемесячных людей в списках FPC, которые конвертируют большие кодовые базы Kylix.

Серверно-ориентированная версия, возможно, была большим хитом, и они продавали слишком сильно на единственном источнике (который неправильно ожидал), но все же принцип GUI, как и должно быть, должен иметь сработало ИМХО, и я виню Linux и рынок Linux. Слишком скоро рынок слишком раскручен и еще не готов к коммерциализации после модели Windows.

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

Серверно-ориентированная версия, возможно, была большим хитом, и они продавали слишком сильно на единственном источнике (который неправильно ожидал), но все же принцип GUI в том виде, в каком он есть, должен был работать IMHO, и я виню Linux и рынок Linux. Слишком скоро рынок слишком раскручен и еще не готов к коммерциализации после модели Windows.

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

Серверно-ориентированная версия, возможно, была большим хитом, и они продавали слишком сильно на единственном источнике (который неправильно ожидал), но все же принцип GUI в том виде, в каком он есть, должен был работать IMHO, и я виню Linux и рынок Linux. Слишком скоро рынок слишком раскручен и еще не готов к коммерциализации после модели Windows.

6
ответ дан 4 December 2019 в 08:16
поделиться

Trying to charge 600 bucks for people used to getting tools and software for free might not have been a wise decision!

0
ответ дан 4 December 2019 в 08:16
поделиться

I bought Kylix when it first came out - it ran very slowly, looked clunky and actually only supported a few specific versions of Linux. Frankly, there were and are better Linux tools out there. But I think it is getting increasingly hard for anyone to make money selling development tools, whatever the platform - the free alternatives are just so good.

1
ответ дан 4 December 2019 в 08:16
поделиться

Что мне не нравилось в Kylix и VCL для Интернета (Intraweb), так это то, что они имеют компоненты, которые выглядят как стандартные компоненты ....

VCL сам по себе довольно общий (за исключением дескрипторов) ... Итак, я хотел бы иметь один и тот же исходный код, те же pas, dfm, dpr .... и, выбрав параметр компилятора, выберите, для какой платформы строить, или даже иметь разные dprs для каждой платформы с одинаковыми исходные файлы.

0
ответ дан 4 December 2019 в 08:16
поделиться

На мой взгляд, для перекрестного платформа native & hosted (VM) подойдет для Delphi; однако есть загвоздка, что перед внедрением его необходимо хорошо продумать. (Как правило, версии Turbo Pascal были, IMO ... хотя некоторые из дополнений к языку Delphi не были; например, вы не можете объявить свойства в интерфейсах для чтения и / или записи только без объявления также ЧТО источником свойства было либо поле, либо метод, который должен был быть объявлен в интерфейсе. IE это была / является хорошей идеей ... но они забыли полностью разделить интерфейс / реализацию.)

Итак, IMO, что нужно это:

1 - Библиотека, подобная VCL- / TurboVision- / GeneralPurpose, разработанная для независимости от платформы. (VCL действительно является хорошим примером для объектно-ориентированных иерархий; как и турбо-видение [для своего времени] ... также телевидение представило и довольно интересно использовало потоки.) Итак, повторюсь:

a) Хороший объект -ориентированная иерархия видимых компонентов ... возможно, также включающая более "процентную" / относительную / векторную схему, чем текущая пиксельная. (Тем самым компенсируя различия в разрешении экрана.)

b) Объекты, которые «знают», как инициализировать и освобождать содержащиеся в них объекты (хотя указатели на объекты будут исключены, поскольку мы хотели бы иметь возможность «совместно использовать» объекты ), поэтому настройка конструкторов для инициализации и деструкторов для освобождения содержащихся объектов не требуется. {IE, Оптимизируйте общий случай.}

c) Невизуальные компоненты, такие как TList, TStringList и т. Д., Должны быть реализованы ... хотя с добавлением таких ADT, как Stack, Queue, PriorityQueue, Heap, Tree и BTree. Однако, в качестве личной просьбы, можем ли мы сделать их основанными на 1, а не на 0? Я спрашиваю об этом, потому что при поиске по ним было бы лучше, если бы 0 был «не найден», а положительное число было бы индексом при использовании беззнаковых чисел, во многом в стиле ShortStrings. Это также имеет то преимущество, что не сокращается вдвое максимально допустимое ограничение размера, как при использовании чисел со знаком.

d) Объекты должны иметь возможность, на самом низком возможном уровне, отправлять и отправлять / удалять себя в поток для реконструкции на другом конце. {Возможно, сложно реализовать; но TurboVision API сделал это со своей схемой регистрации ... с участием RTTI это должно быть немного проще. }

e) Вышеупомянутые ADT также должны иметь наследственную наследственность универсального интерфейса, например, TStringList, которая дает вам список строк, свойство соответствующих объектов которых является объектами типа TIntergerObject.

f) Типы контейнеров, такие как stack или StringList также должны знать свой содержащийся тип; и являются ли они однородными или нет.

g) Поддерево объекта синтаксического анализа на невизуальном дереве объектов, которое является наследуемым и обобщенным (возможно, такое, которое "ест" BNF и соответственно анализирует ввод ... ОГРОМНЫЙ проект в

Я знаю, что это сложная задача и много работы. Однако и результат будет огромным. JVM может быть объектом Stack и объектом синтаксического анализатора, который переводит исходный код в соответствующие объекты быть помещенным в стек ... Компилятор / интерпретатор Forth может быть реализован таким же образом с несколькими стеками и объектом парсера Forth. Вы, очевидно, видите, к чему это ведет: имея в основе универсальную и обобщенную библиотеку ADT и работая над созданием фреймворка, следующая итерация RAD studio могла одним махом стать не только конкурентом .NET для его «любого языка». идея, но и для нескольких архетекций на бэкэнде. (Да, есть проблема с размером и порядком байтов, но идея языков высокого уровня состоит в том, чтобы избавить программиста от этих проблем, если он не уделяет им особого внимания; эти проблемы могут быть хорошо решены путем сохранения байта Delphi, Integer, LongInt размеры стабильны, как и в настоящее время [возможно, используя NativeInteger,

3
ответ дан 4 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: