Ну чего там с языками программирования и технологиями?

Discussion in 'Off Topic' started by -rust-, Sep 2, 2022.

  1. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,320
    Location:
    Russia
    Это было 50 лет назад. Ну или как минимум 30.

    Сейчас он по сути мало отличается по функционалу от того же C#.
    Который, по сути, из паскаля и вырос, после чего уже паскаль уже стал брать из шарпа идеи обратно.
     
    Last edited: Sep 26, 2022
  2. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Да. Поэтому надо знать о каком стандарте паскаля говорить (если делать заявления и если какой то стандарт вообще принимался). Я в этом недостаточно копенгаген. Я знаю что и Apple Pascal/Object Pascal и Borland Pascal отошли от стандарта (первый ввел тип "Str255", второй вроде как "String" которых не было в стандарте языка). Я даже не уверен был ли UCSD Pascal стандартным или нет.

    Ну это уже явное преувеличение, не?
    в паскале что, есть async/await? или функции высших порядков?
     
  3. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,320
    Location:
    Russia
    Нынче язык называется Object Pascal с несколькими диалектами в разных компиляторах.
    Asynchronous Programming Library.
    Там есть аналогичный функционал, с промисами, параллельными циклами и т.п..
    Есть, хотя синтаксис довольно корявый, надо признать.
    Но в целом и желающих использовать такие подходы не много.

    Ибо это все нарушает принцип KISS. Очень важный принцип, по моему.

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

    Вот чего в паскале пока не ввели - это краткого синтаксиса для лямбд. Анонимные функции все же сильно вербальней.
     
    Last edited: Sep 26, 2022
  4. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    А формальный стандарт где то опубликован? Я, честно говоря, не нашел. последний ISO который навскидку ищется это 1990 год. Вот тут стандарты более менее собраны:
    http://pascal.hansotten.com/standard-pascal-and-validation/

    выглядит тяжеловесно на мой глаз (паскалевсого кода не касался с 95 года наверное) и не совсем тем что я спросил. почитаю позже, спс.
    У меня вызывало неприятие/ощущение нереальности твое заявление что C# из паскаля вырос ))))

    Ну это религиозно-дискуссионный вопрос, ИМХО.
    "Зачем нужна рекурсия, когда есть for и while?"
    "Зачем нужны for и while, когда есть if и goto?"
    "Зачем вообще нужны переменные, когда есть адреса в памяти и можно просто, следуя KISS принципу, их читать и писать?"

    Границу обычно люди проводят по своему уровню комфорта.
     
  5. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,320
    Location:
    Russia
    Этой книжке 30 лет.
    Единого стандарта по большому счету давно нет. Базовый паскаль по сути давно мертв.
    Есть стандарт Object Pascal, но сам по себе он тоже устарел на десятилетия.
    А основные диалекты Object Pascal нынче это:
    1. Delphi - проприетарный продукт от Idera. "Стандартом" - тут можно считать их документацию. Наиболее распространен. Стандарт реализации современного Object Pascal де факто. Компиляторы свои для винды (очень и очень быстрая сборка) + LLVM для кроссплатформы. Весьма мощная IDE у языка написана на самом Delphi.
    2. Free Pascal - опенсорс вариация Delphi, где есть как режим совместимости по коду и основным библиотекам с Delphi, так и режим со своими подходами. Что характерно полноценная кроссплатформенность, дженерики, да и многое другое там появилась намного раньше Delphi, но у Delphi богаче IDE и наборы библиотек и фреймворков, хотя многие библиотеки одновременно совместимы и с Delphi и с Free Pascal. Компиляторы свои.
    3. Oxygenе - диалект Object Pascal на базе .net и MSVS, со всеми плюсами и минусами. Концептуальные различия от C# надо искать с лупой.

    Ну есть и еще с десяток малораспространённых реализаций, не стоящих серьезных упоминаний.
    Основные нюансы связаны с тем что работу со стандартным виндовым GUI в Delphi надо производить в главном потоке.
    Если не работать на запись с GUI напрямую из дочерних потоков, то и всякие костальные синхронизации с очередями делать не надо.
    Так и есть. С# создавал главный разработчик Delphi, которого переманила к себе Microsoft. Со всеми вытекающими.
    Потому языки во многом очень похожи. Причем миграция идей шла в обе стороны. Десятилетиями.
    Не стоит доводить до маразма, да.
    Но на вкус и цвет все фломастеры разные. Со своими полюсами и минусами.

    И если в конце не видно разницы, то... (с)
     
    Last edited: Sep 26, 2022
  6. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Увы. Это, наверное, из разряда "компилятора нет под нужную платформу/архитектуру". Никак не лечится :(
     
  7. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    К счастью для сишарпа он не сделал главной ошибки - не попытался делать новый язык совместимым с чем то сильно старым )
    "очень похожи" они, наверное как и все АЛГОЛ-подобные языки. Не Лисп и не Форт потому что )

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

    Примерно та же проблема была и в Objectjve-C и эппловском расширении Си, когда к ним добавили блоки/замыкания, вроде можно много что сделать но из за совместимости с синтаксисом 70-х/80-х просто кровь из глаз когда пытаешься это прочитать.
    Новый язык (Свифт) сделали без таких ограничений.
     
  8. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,320
    Location:
    Russia
    Соглашусь. Изврат тот еще. Нужны новые, более "красивые", конструкции. Но не вместо старых.
    Когда несколько лет назад разрешили инлайн определение переменных, в том числе неявное, Никлаус Вирт инфаркта не получил, да и небо на землю не упало, а старый код продолжил работать.
    С одной стороны обратная совместимость мешает развитию, с другой - накапливаются огромные наработки, которые можно спокойно использовать и дорабатывать, без необходимости периодически переписывать все чуть ли не с нуля.
     
    Last edited: Sep 26, 2022
  9. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    По поводу развития/старых наработок - никто не машет флагами и не призывает "выкинуть нафиг/переписать заново".
    Вон в эппловских операционках (подозреваю и в других системах тоже) математические библиотеки до сих пор фортрановские BLAS и LAPACK вроде как включают. Завернули их, обложили сишными хедерами - и пофиг что им много десятков лет. Кто то писал и отлаживал, зачем их выкидывать или переписывать?

    Так же как и в случае с новым языком Свифт. Когда его разрабатывали, сумели найти красивый компромисс между новизной языка и интероперабильностью со старым кодом. Все имеющиеся библиотеки на Си/Обжектив-Си из Свифта вызываются и работают.

    Так же и в случае F# в студии. Сделали нормальный интероп с C# и положили язык "параллельно", ничего не выкидывая и никого не ограничивая.
     
  10. Relict

    Relict Well-Known Member

    Joined:
    Jan 4, 2007
    Messages:
    14,138
    Location:
    Москворечье
    Дело в чем угодно, только не в технической стороне дела. Удивительно, что хоть java 8 стала доступна. Про Kotlin/Scala - ни-ни ...:mad:
     
  11. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,416
    Location:
    Tomsk, Russia
    порой сильно достаёт "придумывание" имени функции/переменной :) и тогда вспоминаешь, что можно префиксом get-/set- поиграться, кемл-кейсом, а чтото глобальненькое (баш же) и вовсе с капслоком :)
     
  12. Bobby

    Bobby Well-Known Member

    Joined:
    Oct 19, 2001
    Messages:
    9,755
    Location:
    Almaty, Kazakhstan
    Посоветуйте что то по C#. Что бы понять его парадигму. Я на нем писал что то, когда он только вышел, как замена MFC и Delphi. А недавно глянул, а там такого навертели. Для меня он тогда был как C++ c формами как у Дельфи.
     
  13. PressLuftHammer

    PressLuftHammer FH Beta Tester

    Joined:
    Mar 5, 2003
    Messages:
    14,979
    Location:
    Ekaterinburg (Russia)
    По мне дак смысла в них при таком синтаксисе крайне мало. Нафиг делали ? IMHO .чтоб было.
    Вот дженерики хоть и позже чем в c# но сделали вполне не хуже.
    Зачем перегрузку операторов сделали? Да хз.
    Даже страшно представить что они выдумают как альтернативу linq.
     
  14. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,320
    Location:
    Russia
    o_O
    o_O
     
  15. PressLuftHammer

    PressLuftHammer FH Beta Tester

    Joined:
    Mar 5, 2003
    Messages:
    14,979
    Location:
    Ekaterinburg (Russia)
    По сути imho изначальна таже java.
    Но с многими фичами которые появились раньше чем в java типа дженериков лямбд, анонимных функций и классов. Последнее время imho больше функциональщины добавили, типа linq.
     
  16. Stefan

    Stefan FH Beta Tester

    Joined:
    Feb 14, 2001
    Messages:
    22,273
    Location:
    Пивбар
    уже 11. На фоне 19 смотрится слабо.
     
  17. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,416
    Location:
    Tomsk, Russia
    гы :)
    мой единственный проект на mono (c-sharp для линуха)
    октябрь 2006.
    if (minJumps==0) // means stay in the same system
    {
    TripDuration2 = 2*WarpDuration + 10;
    }
    else
    {
    TripDuration2 = minJumps * ( JumpDuration + WarpDuration + 15000/MaxSpeed ) +
    WarpDuration + 15000/MaxSpeed ;
    }
    Destinations += String.Format( "\n\tsell@{0}[i/pc]:{1};\t", (int)(wstoi.Price*0.99), currDestinationStation
    );
    DestInfo += "["+wbsid+"@"+wbtoi.SystemID+">;\t";
    DestInfo += ">"+wssid+"@"+wstoi.SystemID+"];";


    CurrProfitRate = Margin * 3600.0/(TripDuration1+TripDuration2+1);

    if (CurrProfitRate>MaxProfitRate)
    {
    MaxProfitRate = CurrProfitRate;
    BestDestinations = Destinations;
    BestTripDuration = TripDuration1+TripDuration2;

    ReportOnProduct="";

    ReportOnProduct += String.Format("{0}[i/hr] {1}[min] {2}[pcs] {3}\t{4}\n",
    (int)(MaxProfitRate),
    (int)((TripDuration1+TripDuration2)/60),
    (int)CargoQty,
    tip.ProductName,
    BestDestinations
    );
    //(int)(FullCost/CargoQty),

    и кусок debug.log:

    Mechanical Parts: buy(@634,64@Ajanen VI - Moon 2 - Aliastra Warehouse), sell(@690,05@Kino VII - Moon 7 - Home Guard Testing Facilities)
    got routes from 30001365 to 30001414
    got routes from 30001414 to 30001372
    passing low profitrate: 5290<113566
    Mechanical Parts: buy(@634,64@Ajanen VI - Moon 2 - Aliastra Warehouse), sell(@667,07@Nonni III - Moon 1 - Home Guard Assembly Plant)
    got routes from 30001365 to 30001414
    got routes from 30001414 to 30001401
    passing low profitrate: 1701<113566
    Mechanical Parts: buy(@634,64@Ajanen VI - Moon 2 - Aliastra Warehouse), sell(@686,98@Elonaya X - Moon 15 - Home Guard Logistic Support)
    got routes from 30001365 to 30001414
    got routes from 30001414 to 30001399
    passing low profitrate: 3246<113566
    Mechanical Parts: buy(@634,64@Ajanen VI - Moon 2 - Aliastra Warehouse), sell(@667,07@Nonni III - Home Guard Testing Facilities)
    got routes from 30001365 to 30001414
    got routes from 30001414 to 30001401
    passing low profitrate: 1701<113566
     
  18. -Shai-

    -Shai- Well-Known Member

    Joined:
    Mar 13, 2000
    Messages:
    41,760
    Location:
    РФ
    серьезно? ева онлайн?:)
     
    mcgru- likes this.
  19. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,416
    Location:
    Tomsk, Russia
    да. она.
    Написал тогда себе TradeRouteFinder - благо, можно было, находясь в какой-либо системе, получать цены по всему региону.
    Экспорт цен в файл (в два-три клика, в готовое место) и запуск программулины. На выходе - готовый самый выгодный маршрут где чего закупать и куда везти.
    Но на деле, конечно, выгоднее было фармить в нулях :)

    а вообще, сейчас как раз интересно что-то типа ботов писать, изучающих изображение экрана.

    P.S.
    немного из экономики ЕУЕ
    торговля в регионах - около 10-20 кк/час (спокойного драйва). в Нулях - около 100кк/час, но с некоторым риском.
    помнится, "месячные билеты" торговались где-то за 1ккк. это 10 часов фарминга в нулях.
    у меня в то время зряплата была где-то 3.5 бакса в час :) и уже было как-то неприятно тратить время в ЕУЕ на фарминг, чтобы оплачивать подписку ирисками.
     
    Last edited: Sep 27, 2022
  20. -Shai-

    -Shai- Well-Known Member

    Joined:
    Mar 13, 2000
    Messages:
    41,760
    Location:
    РФ
    некоторые молодцы вон для Элитки "автопилот" пишут
    как раз типа того, чтоб с экрана читать "колечко" направления следующего прыжка, доворота и запуска
    основная трабла - объекты, типа звезды/планеты, обруливать