• Разработка веб-сайта на паскале (backend)
    0
    Я имел в виду: строки, размер которых известен динамически, но не статически, в языке Ада могут быть на стеке. Я имел в виду случай, когда выделяется не максимальный объём, а сколько надо.

    Да, в Расте строки делали по подобию адских
  • Разработка веб-сайта на паскале (backend)
    0
    почему декларация класса вынесена отдельно от имплементации в Delphi


    Возможно, вам бы понравился Оберон. А мне не понравился. Мусорка.

    Мне нравится вот так:

    package Ada.Real_Time
      with Nonblocking is
    
      type Time is private;
      Time_First : constant Time;
      Time_Last : constant Time;
      Time_Unit : constant := implementation-defined-real-number;
    
      type Time_Span is private;
      Time_Span_First : constant Time_Span;
      Time_Span_Last : constant Time_Span;
      Time_Span_Zero : constant Time_Span;
      Time_Span_Unit : constant Time_Span;
    
      Tick : constant Time_Span;
      function Clock return Time;
    
      function "+" (Left : Time; Right : Time_Span) return Time;
      function "+" (Left : Time_Span; Right : Time) return Time;
      function "-" (Left : Time; Right : Time_Span) return Time;
      function "-" (Left : Time; Right : Time) return Time_Span;


    То есть, вот есть Time и Time_Span. Если к Time прибавить Time_Span, получим Time. Time можно получить у функции Clock, а Time_Span можно получить как разность двух Time. Самая суть выражается, читать одно удовольствие. А детали выносятся в «примечания» (private).

    Delphi, хоть и не такой мусорный язык, но там уже is private нет. Вынь да положь содержимое всех кишков на всеобщее обозрение вперемешку с действительно интересными методами.

    Вот аналог на Delphi.

    unit System.Diagnostics;
    
    interface
    {$HPPEMIT LEGACYHPP}
    
    uses System.Classes, System.TimeSpan;
    
    type
      TStopwatch = record
      strict private
        class var FFrequency: Int64;
        class var FIsHighResolution: Boolean;
        class var TickFrequency: Double;
      strict private
        FElapsed: Int64;
        FRunning: Boolean;
        FStartTimeStamp: Int64;
        function GetElapsed: TTimeSpan;
        function GetElapsedDateTimeTicks: Int64;
        function GetElapsedMilliseconds: Int64;
        function GetElapsedTicks: Int64;
        class procedure InitStopwatchType; static;
      public
        class function Create: TStopwatch; static;
        class function GetTimeStamp: Int64; static;
        procedure Reset;
        procedure Start;
        class function StartNew: TStopwatch; static;
        procedure Stop;
        property Elapsed: TTimeSpan read GetElapsed;
        property ElapsedMilliseconds: Int64 read GetElapsedMilliseconds;
        property ElapsedTicks: Int64 read GetElapsedTicks;
        class property Frequency: Int64 read FFrequency;
        class property IsHighResolution: Boolean read FIsHighResolution;
        property IsRunning: Boolean read FRunning;
      end;
    
    implementation
    


    Ну что, приятно такое читать? А со встроенными телами методов ещё больший кошмар.
  • Разработка веб-сайта на паскале (backend)
    0
    GNAT и GNOGA бесплатные
  • Разработка веб-сайта на паскале (backend)
    –1
    А с чего бы ему не мочь?

    Другое дело, позор тем, кто для nginx выбрал не Аду или хотя бы Паскаль. Фу таким быть
  • Разработка веб-сайта на паскале (backend)
    +2
    В C++ ублюдочная модульность. Пространства имён с исходниками не связаны, кто угодно может подкладывать куда угодно.

    Ещё типично, когда на одной операционке #include сделал вроде бы для всего, а эти #include потащили другие #include, а на другой целевой платформе не потащили. И вот, значит, в неподходящий момент мы узнаём об этом. Сильнейшее желание свалить из этого дурдома.
  • Разработка веб-сайта на паскале (backend)
    0
    Строки на стеке — это Ада, но не Delphi
  • Разработка веб-сайта на паскале (backend)
    0
    PDF вывод есть в Cairo, а привязки к Cairo стараниями Мигель де Каза (GNOME) я бы ожидал найти в Mono
  • Разработка веб-сайта на паскале (backend)
    0
    Любой продакшн же с чего-то начинался
  • Разработка веб-сайта на паскале (backend)
    0
    Вот тут ещё движок блога сделали
  • Разработка веб-сайта на паскале (backend)
    –1
    Поддержка WebAssembly есть в GNAT и FPC
  • Is Delphi Dying — False
    –1
    Если у нас можно дампить методы и аргументы любых классов и записей с расширенным RTTI, то и сам класс пробрасывается.

    В dfm я видел, как это делается для органов управления:

          class MyForm(Form):
            def __init__(self, Owner):
              self.Caption = 'Subclassed form'
              self.btnClose = Button(self)
              self.btnClose.Parent = self
              self.btnClose.Caption = 'Close'
              self.btnClose.SetBounds(10, 10, 120, 30)
              self.btnClose.OnClick = self.btnCloseClick
          
              self.chkCanClose = CheckBox(self)
              self.chkCanClose.Parent = self
              self.chkCanClose.Caption = 'Can close?'
              self.chkCanClose.SetBounds(10, 50, 120, 30)
          
              self.grdTest = DrawGrid(self)
              self.grdTest.Parent = self
              self.grdTest.SetBounds(10, 100, 300, 250)
              self.grdTest.OnDrawCell = self.grdTestDrawCell
              self.grdTest.OnSelectCell = self.grdTestSelectCell
          
              self.OnCloseQuery = self.MyFormCloseQuery
              self.OnClose = self.MyFormClose
              self.Width = 400
              self.Height = 400
    


    Как минимум Button и CheckBox здесь динамически созданы

    писать com библиотеки вместо нормального кода


    А с чего вдруг нормальным кодом не считается COM? Какой смысл делать кучу привязок под отдельные языки программирования, когда можно осчастливить всех разом. Я вот для Visual DialogScript сделал мост в OLE и получил возможность качать файлы по SFTP. И всё остальное, что можно делать через OLE библиотеки. 2ГИСом рулить. А так стали бы в 2ГИС делать модуль для VDS? Очень сомневаюсь.

    И управление памятью там сразу понятное. В Delphi, если программа вся на интерфейсах, как у нас на работе, тоже всё понятно. А в C++ там я не знаю как надо офигеть, чтоб каждый нюанс типа shared_ptr_from_this корректно учесть. Шаблонами я не видел, чтоб это делалось, зато видел, как напильником работают в SWIG.

    + это к сожалению только для винды


    На ущербных операционках вполне пашет PyXPCOM.

    Вообще, конечно, это мощный камень в огород государства. Кто как не государство должно строить недостающую инфраструктуру. На примере Jabber мы уже увидели, как коммерсы неспособны договориться.
    Ну или как IBM с Apple тянули на своих плечах кроссплатформенный IBM System Object Model (Windows, OS/2, Mac OS, UNIX AIX, мэйнфреймы с OS/390). Компилятор C++ модифицировали, чтоб SOM классы генерил вместо обычных C++ классов. И интеграцию в скрипты REXX всего этого дела. Object COBOL ещё получил SOM как единственный способ делать объекты. Сторонние разработчики запилили DirectToSOM Modula-2, и стало как минимум три языка нативного программирования, между которыми работает наследование классов, есть выход в скрипты, удалённый вызов методов и все остальные прелести Middleware. Но потом пришла Java, и вроде как натив стал не нужен, а когда поняли, что нет, нужен, про былые достижения натива забыли.

    Коммерсам это вспомнить будет выгодно, если у раковины будет один слив. То есть, никогда или
    только для винды

    или если всё запечатать в проприетарный ЯП.

    Подходящее место — это университеты, как бы только их отучить смотреть в рот коммерсам, а самим творить историю.
  • Is Delphi Dying — False
    0
    А я не вижу. Смотрю в описание класса
      procedure SetMeUp(S: string; I : Integer);
      function DescribeMe(): string;


    Смотрю как заворачивается:

      p := PyDelphiWrapper.Wrap(TTestClass.Create, soOwned);
      PythonModule.SetVar( 'DVar', p );
      PyEngine.Py_DecRef(p);


    И я почитал, с TTestRTTIAccess чуть ниже более прямой пример, только на современный RTTI опирается.

    Питон не умеет использовать напрямую ком объекты, для этого их оборачивают при помощи С или С++


    Единый для всех win32com этим и занимается. Ну а также oleaut32.dll, в которой движок, читающий библиотеку типов из ресурсов и реализующий IDispatch для бинарных интерфейсов.
  • Is Delphi Dying — False
    0
    В комментариях к модулю-обёртке, в истории изменений был указан номер демо 31. Открыл и вижу:

    github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.pas#L74

    Использование из Python:

    github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.dfm#L112

    Да только это обёртка над ком, там используется не сама ком библиотека, она завраплена скорее всего через тот же С++.


    Не понял
  • Is Delphi Dying — False
    0
    zabaykin.ru/?p=53 вот нашёл работу с OLE из Python

    А это через RTTI:
    github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Components/Sources/Core/WrapDelphi.pas

    Причём, как я вижу по истории, они там с 2005го года ещё через старенький неудобный RTTI умели работать.
  • Is Delphi Dying — False
    0
    Ну и вы UI мессенджера на 1млн пользователей на ядрах своих серверов собрались крутить?

    Надо научиться побеждать ограничения WebAssembly. Зелёные потоки, сегментированные стеки, а поверх этого RAII. Вот тогда веб станет интересным местом.
  • Is Delphi Dying — False
    –1
    Ну вообще-то они оба происходят от языка структурного программирования Алгол, и происходило это годах очень близких, 1970 и 1971. Это Си или BCPL изуродовал Алгол, а в Паскале синтаксис просто унаследован.

    Если посмотреть, допустим, на какие ЯП ГОСТы есть, там Си или чего-то с фигурными скобками в принципе нет, не смотря на одинаковый возраст Паскаля и Си. Нафиг не падали эти скобки никому, жили и жили без них.
  • Is Delphi Dying — False
    0
    Зато на планшетах электронная клавиатура автоматом показывается
  • Is Delphi Dying — False
    0
    Для нативного кода нет хорошей платформы запуска, не зависящей от OS. А у Electron вездесущий HTML5
  • Is Delphi Dying — False
    0
    сыроедофф.рф на Аде. Довольны?
  • Is Delphi Dying — False
    0
    А вам пользователи не присылают смешные скриншоты с мониторов Ретина, где DPI 300%? И как дела с автоматическим показом экранной клавиатуры на вендопланшетах

    С языком, конечно, не связано напрямую, но для Delphi GUI — это важная часть экосистемы
  • Is Delphi Dying — False
    0
    Во-первых, в Delphi ещё с ранних времён поддерживали COM и OLE, и библиотеки COM классов были столбовой дорогой. И настолько лучше, чем в C++ тех лет, что кто не прогал COM в Delphi, можно считать, вообще не имеет понятия о COM. Потом уже каждый отдельный Python через OLE подхватит всё автоматом.

    Во-вторых, в Delphi 2010 пошли по пути Objective-C. Код нативный, но может быть сдобрен произвольно обильным количеством метаинформации. Класс или лучше интерфейс помечаются $M, затем вызовы можно делать через System.Rtti. Я не знаком с Python API, но, я так понимаю, раз и навсегда там можно закодить, чтоб из Python'овских any переделывать в System.Rtti.TValue, всё это дело вызывать и обратно результат заворачивать. И это будет работать для всего, где в Delphi есть RTTI, без написания def().def(). До Delphi 2010 поддержка RTTI тоже была, но ей довольно непросто было пользоваться (см. Hallvard Vassbotn RTTI Utils и переводы блога у GunSmoker).

    Вообще, конечно, лучше всего IBM SOM возродить для нативного кода, чем маяться с языкоцентричными решениями
  • Вышел Embarcadero RAD Studio 10.3.2 или то что мертво… умерло
    0
    Мне кажется, их могло бы спасти появление бэкенда для WebAssembly с многопоточностью на зелёных потоках и сегментированных стеках. Первейшая необходимая платформа не покрыта. А так хоть первый нормальный инструмент мог появиться. Но R&D у них давно нет.

    По Linux в 10.2 был ARC, как в мобильных версиях, и это уникально. В 10.3 Linux без ARC. Я, правда, не знаю, хорошо это или плохо. У них в так называемом nextgen массивы только динамические бывают, и, я так понимаю, ARC может приезжать паровозом только с этими нововведениями. Какой вообще смысл в нативные программы тащить ограничения ублюдошных виртуальных машин? Наоборот, нужно находить всё новые и новые способы заставить всяких дотнетчиков чувствовать себя муравьями на фоне величия нативного программирования. В Java нет двойного CAS? Ахахахаха!

    У Delphi от Паскаля хороший фундамент. Массивы могут индексироваться не только чиселкой, но и перечисляемым типом, или поддиапазоном его. Открытые массивы, особенно, если Slice ещё бы кто-нибудь наконец сделал с двумя аргументами, как у Copy, позволяют глянуть в срез массива хоть на чтение, хоть на запись. Зачем это было ломать.

    Вот до чего же обидно, что там на Аду не смотрят. Ведь Delphi первые такими хорошими получились под влиянием Modula-3, а сейчас по каким-то помойкам нововведения собирают. FPC, к сожалению, туда же.
  • Пол Грэм про Java и «хакерские» языки программирования (2001)
    0
    Нормально доступный GNAT появился только году в 1995м. Многие до сих пор используемые проекты датируются годами появления до 1995го.

    Те, кто развалил СССР, тоже удружили. У нас с Европой была другая школа программирования, и языку Ада там было хорошее место. Десятки своих трансляторов, и у Венгрии ещё закупали. Без нас Европа пала под натиском американской школы.
  • SSLR: Screen Space Local Reflections в AAA-играх
    0
    А я вот понять не могу. Если нам не хватает изображения на экране, так давайте всю сферу рендерить.
  • ArcaOS 5.0 — новая версия OS/2 стала доступна широкой публике
    0
    В Linux даже COM и OLE повсеместно используемых как в Windows нет. Это же дно.

    А в OS/2 есть SOM и OpenDoc, похоже на экосистему Objective-C и Swift в Mac OS X. SOM занимает место libobjc.
  • Идея децентрализованной социальной сети следующего поколения
    +2
    На мой взгляд, убивать эти проекты начали следующие тенденции:

    1. Вместо одного драгоценного компьютера вереница меняющихся и множественных устройств
    2. Крайне ограниченные мобильные устройства вытеснили компьютеры
    3. Вместо одной операционки, под которую энтузиаст мог сидеть и годами пилить Шареазу, стало надо 100500 нетривиальных портов, которые сделать у энтузиаста пупок развяжется


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

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

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

    Кстати, если знаете такие сети трёхслойные, напишите. На мой взгляд, это сейчас такой же фундаментальный SDK должен быть для сетевых программ, как некогда (до времён NAT) были библиотеки сокетов.

    Против последней проблемы не знаю, чего б такого хорошего придумать. Есть свои соображения, но это не так запросто. Достал Электрон, но, похоже, сейчас только на нём, да ещё на не менее опротивевших Джавах и Питонах это могут только энтузиасты потянуть. Для задач экономии отнюдь не датацентровых вычислительных ресурсов всё это довольно губительно.

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


    Расширение протокола для поддержки пофайловых TTH, как во всех более новых обменных сетях, для BitTorrent существует года с 2007го. Пинайте разработчиков, фигли они не реализуют. Почаще бы за эти 13 лет пинали, глядишь, уже сделали.
  • У «Т-платформ» крупные проблемы: сайт не работает, 80% сотрудников уволились
    +2
    Идти-то идут, но оказываются экстремистами
  • Манифест об отмене 146 УК и бойкоте Сбербанка и правообладателей-паразитов. За опенсорс и Nginx
    0
  • Манифест об отмене 146 УК и бойкоте Сбербанка и правообладателей-паразитов. За опенсорс и Nginx
    +1
    Не надо использовать блатной язык не блатным
  • Манифест об отмене 146 УК и бойкоте Сбербанка и правообладателей-паразитов. За опенсорс и Nginx
    0
    В тот же день, когда происходила инаугурация, 7 мая 2018 года, партию, в программе которой была отмена так называемой интеллектуальной собственности, признали в суде экстремистской организацией
  • GHIDRA vs. IDA Pro
    0
    Полезно иногда как способ ужать вывод дизассемблера без покупки 30дюймовой ретины
  • GHIDRA vs. IDA Pro
    0
    Там какой-то Питон нужен, я вроде его поставил, но что-то всё равно не стыкуется. Думал, может, надо 32битный Питон ещё поставить, тоже поставил. В общем, у кого-то работает, но явно не у меня. Хрупкие все эти Питоны, ломаются на раз-два.
  • GHIDRA vs. IDA Pro
    0
    В голосовании не хватает открытого Avast RetDec
  • GHIDRA vs. IDA Pro
    –2

    8:50 Другой процессор… своя архитектура…

  • Rust для веб-разработчика — быстрый старт и стремительный полет
    +1
    В нормальном виде история становления ЯП была в книге
    Кауфман В.Ш. Языки программирования: концепции и принципы
  • Кто он — убийца JavaScript?
    +3
    JavaScript сейчас берёт на себя груз обеспечения совместимости между версиями. То есть, можно написать if (нечто.ИмяМетода), и так просто и понятно проверить, а есть ли он, этот метод (какова версия реализации). И, соответственно, поработать с той или иной версией реализации. Наследование если на JavaScript делать, наследованные методы автодобавляются в унаследованные экземпляры, и тогда потомкам не обязательно знать, что у них что-то добавилось. Ну, правда, если имена совпали, тогда ой.

    А вот если обратиться к нативу, как в WASM, то старые проблемы всплывают вновь. Ими активно занимались все 1990е, а потом вроде как их решила Java. В C++ 98 не вошло ничего из IBM Direct To SOM, Sun OBI, SGI Delta/C++. А когда ближе к концу 2000х, обломав зубы на чисто-Java-браузере HotJar и прочей чисто-джавовости, которые получились как-то не очень, в отличие от Apple CyberDog на SOM и OpenDoc, начали понимать, что Java — это не всё, это вылилось в обновление C++ 2009, но от наработок 1990х там всё так же ни следа. Только в Objective-C сохранились наработки 1990х, и даже были чуть улучшены в 2006м, там это назвали nonfragile ivars.

    И вот теперь, получив в руки инструмент WASM, мы осознаём, что всё на том же перекрёстке. Мы так и не пережили 90е. Нам в нативе нужен инструмент сопряжения изменчивых компонент, а его нет. Значит, в роли такого придётся, чтоб был JavaScript. Нам постоянно придётся в него выходить, потому что в WASM решать свои проблемы не умеем. Либо какая-то ВМ заменит шило на мыло. Вместо фигового JS будет очередная фиговая ВМ.

    Просто попробуйте начать активно использовать разделяемые библиотеки в EmScripten. Да там даже интерфейсы по типу COM нагородить между независимо собранными wasm — победа. До наследования без проблемы хрупкого базового класса как до Луны пешком. Всё реальное применение WASM скатывается к здоровенным статически собранным блобам, обновляемым как единое целое. Хотя, учитывая, как без фундаментальной научной работы такие проблемы в прошлом решались разрозненными участниками рынка, заинтересованными только в повышении наших на них расходов, но не в улучшении ситуации в целом, мы и впрямь можем дожить до того, чтоб глянуть один твит, нужно будет загрузить 65Мб WASM, ведь тот, что в кеше, успел протухнуть.
  • Кто он — убийца JavaScript?
    0
    Как там дела с поддержкой слабых ссылок, деструкторов и всего того, чего так отчаянно не хватает в JavaScript?
  • В Нидерландах остановили серверы Moonwalk, на которых работали 80% пиратских онлайн-кинотеатров в РФ
    0
    Есть научпоп и годная политота
  • На данный момент Россия технологически не готова к «суверенному рунету»
    –2
    Езжай в Благовещенск ловить китайский 5G из Хэйхе
  • На данный момент Россия технологически не готова к «суверенному рунету»
    0
    Надо просто несколько десятков тысяч вебмастеров сделать собственниками сертификатов за 2т.р. в год, существующие зарубежные аналоги которых стоят в десять раз дороже из-за географической удалённости, языкового барьера и иностранных юридических заморочек.

    То ли дело, зашёл в своём городе, а в моём родном Барнауле штук 5-то точно есть, в любой УЦ, лично показал паспорт, ОГРН, расписался, печать поставил. Заверить при необходимости можно на родном языке неподалёку у нотариуса, которых полным-полно.

    Если в УЦ можно получить сертификат на ключ, позволяющий недвижимостью управлять, то уж сайты хостить и программы подписывать и подавно. И это точно уровень EV. EV WildCard за 2 т.р. в год или за 60. Не знаю, что и выбрать, весь в раздумьях.

    Если здравые силы в Кремле победят, то как-то так оно и будет. Инфраструктура УЦ у нас уже есть, только выпускает сейчас белиберду, но когда начнёт выпускать то, что нужно, что ещё это может быть, как не ГОСТ?

    Альтернативный путь пока исследуется в RU-CENTER. Одним коготком мы зацепились и попали в круг избранных, кому доверен выпуск сертификатов, но не для программ, а только для сайтов, и не EV. Внутрь корня USERTRUST как-то пробился RU-CENTER. Там не ГОСТ, да.