камлатель на ocaml в Jane Street
  • Український ФОП у Великобританії

    З savings податків не буде:
    community.hmrc.gov.uk/...​a4-ea11-8b71-00155d9caa1c

    З доходу ж hmrc очікуватиме податок, як тільки ви станете tax resident (6 місяців). Якщо ви бажаєте довести, що ви — не tax domiciled, потрібна буде допомога tax advisor-а
    Його можна пошукати на www.unbiased.co.uk

  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Чому? (де кореляція між hft та поганим wlb? )

  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Для 125К, фактичний податок 41%: listentotaxman.com/...​&age=0&time=1&ingr=125000

  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Ну, при 100+ в пенсію багато без податків теж не вкладеш, хіба ні?

  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Тут так само, але через те, що батьки теж з акцентами, вони передаются та зберігаються/перетворюються, і тому тут не тільки регіональні акценти, а і етичні, і соціальні, і їх мікси, і тд і тп. Дуже показове відео, зауважте, що він показує британські акценти, а не акценти тих, хто «понаїхав». З будь яким з цих акцентів зійдете за свого:
    youtu.be/dABo_DCIdpM

    Навіть суто регіональні акценти дуже схожі на велику кількість іноземних :
    youtu.be/u_BDG9JtGw8

    Підтримав: Global Engineer
  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Sorry mate can’t wag, gotta get a crack on things, innit?

    Підтримав: Iliya Isd
  • Цікавить чому багато хто мріє про переїзд у Великобританію

    більш менш однакова вимова, та яку вчать у школі

     — вибачте, але оця одна фраза видає тотальну необізнаність як з питанням uk акцентів, так і з питанням uk школ :)

    Мабуть все забула у старшій школі:
    youtu.be/wtBrs03PV8c

    Цьому музиканту теж мабуть не пощастило зі школою:
    youtu.be/qlNGh6YWbrY

    А ось школяр прямо під школою:
    youtu.be/pj705DvCSxg

    І тд і тп

    Підтримав: K Vadym
  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Коли я писав свій коментар, я під словом «тут» мав на увазі саме UK. Тут акцент у кожного другого, якщо починати воротити носа від усіх, у кого нема RP, нікого не залишиться :) На акцент не звертає увагу рішуче ніхто. На словниковий запас чи граматику — може, у фатальних випадках, але на акцент — ні. Бо акцент — це норма.

    Підтримав: А Р
  • Цікавить чому багато хто мріє про переїзд у Великобританію

    Вибачте, а до якого акценту тут звикло суспільство? :)

    Тут скільки людей — стільки акцентів...

  • Альтернатива Лондону в UK

    30 минут от Лондона — это как 4 зона метро (только билет подороже), по лондонском меркам считай рядом

  • Альтернатива Лондону в UK

    А хочется большой город или не обязательно?

    Любой из городов-сателлитов в 30-60 минутах поездом подойдёт? Вбиваешь лимит времени в mapnificent и смотришь, что понравится...

    Например, поезд на Кембридж и любые его остановки вдоль Lee Valley nature reserve.

  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    В какой раздел/на какую страницу смотреть?

  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    О следовании адресов, определённых «штрих-операцией» в книжке «Вычислительная машина Киев ...» упоминается несколько раз.

    Вас не затруднит привести ссылку на страницу?

    Из описания формулы циклирования следует, что «обрыв/завершение» такого цикла должен "обрываться"/завершаться. Чем, как не 0-указателем?

    Описание формулы циклирования в самом общем ее виде (стр. 44-45) говорит о том, что она перебирает элементы какого-то множества. Ничего про 0-указатель там нет. Я смотрю не на ту страницу?

  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    Роль регистрів виконували комірки пам’яті, що на функціональність не впливає.

    Зато влияет на то, как эта функциональность достигается. Есть регистры общего назначения и команды, их использующие — пишем «mov eax,[ebx]», нету — приходится использовать «адрес хранится по этому адресу»

    2. Ф-операція використовується не лише у групових операціях, а й сама по собі.

    Судя по примерам из книги — только для того, чтобы положить адрес аргумента в ячейку перед вызовом подпрограммы из ППЗУ (о чем я упомянул). Или есть примеры, в которых это не так? На какую страницу смотреть?

    3. На сторінці 45 (Машина Киев) зазначено: «В формуле циклирования может быть предусмотрен одновременный перебор нескольких множеств, например ...», що є унікальною можливістю визначення вкладений циклів у формулі циклування. Ця можливість відсутня у «заголовках циклів» імперативних мов програмування. Aормула циклування може бути використана для: а) отримання декартового добутку: перебору усіх tлементів однієї множини з усіма іншими елементами іншої множини (може бути n множин); б) об’єднання множин; в) фільтрації (тета обмеження алгебри Кодда); г) перетину; д) тета-з’єднання е) теоретико-множинного віднімання тощо.

    Только «формулы циклирования по нескольким множествам» нельзя было использовать при практическом программировании, т.к. ПП-АК допускало только (стр. 130) операции циклирования, соответсвующие привычным всем нам циклам «for i =n to m». Если я не прав, то на какой странице можно увидеть листинг для ПП-АК или ПП-2 с такой формулой циклирования?

    4. Про деревоподібні формати (складні ієрархічні структури) описано у інших монографіях, зокрема в «Адресное программирование». Наявні приклади використання цих форматів. Зокрема деревоподібні формати, на відміну від абстрактних типів даних, допускають використання у якості складових елементів адреси підпрограм, що дозволяє «побачити» щось подібне на екземпляри класів ООП (з даними пов’язуються підпрограми їх обробки).

    У вас есть выходные данные и номер страницы?

    5. У 1963г. в США переведено та видано додатки до книжки, в якій є повний опис Адресної мови (монографію, яку надруковано у 1962р. була у США та, напевно, були і інші публікації по Адресному програмуванню).

    Аналогичный вопрос — у вас есть выходные данные?

  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    Слідування адрес, яке визначено «штрих-операцією» у формулах циклування адресної мови обривається/завершується вказівником якій має значення адреси в оперативній пам’яті — «0».
    В комп’ютерах МЕСМ, «Київ», М-20 (БЕСМ-3, БЕСМ-4), серії «Мінськ», «Дніпро» хоч і існувала (може не у всіх фізично існувала) комірка з адресою «0», але вона була недоступна програмістам та використовувалась для завершення «спискового ланцюжка», заданого «штрих-операцією».

    У вас найдется источник, который описывает исходники с подобными «списковыми цепочками», и использования адреса 0 в качестве «конца списка»? Например номер страницы из пресловутого «Вычислительная машина Киев — математическое описание» или «Элементы программирования / Б.В.Гнеденко, В.С.Королюк, Е.Л.Ющенко — М.: ГИФМЛ, 1961. »?

  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    Адресна мова надавала програмістам використовувати поняття МНОЖИНА та робити теретико-множинні операції над множинами. Визначення умов у формулах циклуванні являє собою щось подібне тета-з’єднанню алгебри Кодда та JOIN.
    Адресна мова має вичерпні декларативні засоби, зокрема «мінус штрих-операція» (обернена до «штрих-операції» — обернена до розіменування Pointers) являє собою чисто декларативний характер. По значенню (адресі чи даним) дозволяє отримати адреси за якими це значення зберігається. Якщо деревоподібні формати організовано у таблиці між якими відношення «один до багатьох», то по значенню первинного ключа можна визначити кортежі (їх адреси) другої таблиці. За своєю суттю зовнішні ключі є адресами.

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

    А было вот что (стр. 46-47 из вашего источника, выделение мое, мои примечания в фигурных скобках):

    «Необходимо отметить три основных уровня адресного языка
    {15, 18]:
    1. Общеалгоритмический уровень, на котором принимается
    наиболее естественное для данной конкретной задачи множество
    адресов и операции следования, описываются общематематическими
    средствами, например с помощью индексов. На этом уровне адресный
    язык наиболее близок к Алголу [13]. {Это все те замечательные высокоуровневы возможности, которые дают нам ассоциативная память и произвольные символьные «адреса». Но увы — выполнять программу на этом уровне можно вручную на бумаге, т.к. транслятора для этого языка нет, а есть только мат. абстракции}

    2. Уровень условных (или символических) адресов, требующий
    упорядочения адресов элементов, составляющих массивы, обрабатываемые алгоритмом. На этом уровне учитывается линейность
    и ограниченность множества адресов, согласующихся с техническими возможностями машин; обычно, если это не оговаривается, речь
    идет о языке уровня условных адресов. {и даже это все еще слишком сложно, и такого транслятора тоже нет}

    3. Уровень конкретных адресов, предполагающий полностью
    упорядоченное множество адресов в связи с конкретной машиной
    с учетом множества истинных адресов ячеек и их глубины.{вот он, ассемблер без макро- части (трансляции символьных адресов в машинные)}

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

    Благодаря этому уже сейчас практически возможно осуществить
    автоматизацию программирования на некоторых его участках. Так,
    внедрение ПП с входным адресным языком {то есть — третий уровень по классификации выше} на машине "Киев«—
    ПП-АК (см. далее), как и ПП с тем же входным языком на других
    машинах («Урал», УМШН— управляющей машины широкого назначения и др.), повысило производительность программистов
    в несколько раз."

    Если же мы начинаем играть на уровне «программирование в теории», то надо начинать с Конрада Цузе и его достижений, я думаю.

    А то получается как сейчас с квантовыми компьютерами — на бумаге у нас алгоритм Шора всех порвал и превратил NP в P :), а на практике у нас 17 qubits и до general-purpose programming еще как до луны.

    Підтримав: Oleg Mayko
  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    «Заметим, что операция Ф может быть использована одновременно для пересылки кода, заданного адресом его адреса (адресом второго ранга), в любую ячейку ОЗУ. ... Адреса 2-ого рангу = вказівник.

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

    Авторы пишут об это прямо (цитирую по приведеному вами источнику, страницы 62-63): можно создать цикл командами НГО ... ОГО, при этом НГО дается адрес, содержащий макс. число циклов и начальное значения регистра смещения (А), ОГО потом этот регистр А увеличивает, пока не будет выполнено нужное кол-во циклов.

    Но так как регистр циклов Ц один, то со вложенными циклами возникаю сложности. Поэтому (страница 63-64) можно использовать команду Ф, которая позволяет менять содержимое А, не меняя/не трогая регистр циклов Ц. Ф дается адрес, она извлекает из него значение, содержащее адрес значения, попадающего одновременно в регистр сдвига А и в любой другой адрес в памяти (чтобы дальше можно было его сравнивать, увеличивать и т.п.). Теперь мы можем делать вложенные циклы, не упираясь в то, что специальный регистр для циклов Ц всего один, и вызывать подпрограммы, передавая им адреса обрабатываемых значений через ячейки с магическим адресом вида 0002.

    Страница 14 (буквально рядом с приводимой вами цитатой) так и говорит: «Операция Ф позволяет кодировать в постоянной памяти циклические процессы произвольной глубины.»

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

    Теперь открываем руководство по программированию WhirlWind (1953 год): www.bitsavers.org/...​e_System_Manual_Dec55.pdf

    И читаем описание его высокоуровневого транслируемого языка программирования.
    На страницах 29-32 описано программирование циклов, в том числе вложенных, с возможностью использования произвольного количества ячеек памяти для хранения текущего значения счетчика вложенных циклов — уровень вложенности ограничен объемом свободной памяти. На странице 30 объясняется, как значение счетчика может быть использовано, чтобы адресовать ячейки памяти адресами вида «база + счетчик». На странице 35-37 объясняются floating addresses — возможность использования произвольных символьных адресов, которые будут транслироваться в физические транслятором (прямая аналогия с множеством адресов в Адресном Языке, и их автоматическая трансляция во множество 0.....). Если читать дальше, то можно найти стек адресов + call/return, локальный storage в подпрограммах, локальные relative addresses, и множество других вещей, знакомых любому, кто видел современный ассемблер. Со страницы 171 описана трехпроходная компиляция языка и трансляция символьных меток в абсолютные адреса....
    Я вижу тут все, что есть в книжке про Киев — и больше — в 1953 году. Первый whirlwind вышел в 1951-ом, но как я понимаю, макроассемблера в нем еще не было.

    Опис архітектури комп’ютера «Київ», включаючи Ф-операцію та інші групові операції модифікації адрес (з Адресного методу програмування) перекладено та видано у США в 1963р. Цей опис містить опис апаратну реалізацію «штрих-операції» (розіменування Pointers).

    Если вы почитаете эту публикацию (а она есть у вас на сайте — files.infoua.net/...​s-Technology-III_1963.pdf), то вы увидите, что там приведен дословные перевод статьи, сравнивающей системы команд разных советских компьютеров того времени. Там нет абсолютно никакого описания Адресного Языка, описание архитектуры состоит из описания раскладки машинного слова на компоненты, а описание операции Ф, из которой, по вашему мнению, можно было «слизать» всю идею, выглядит вот так (страница 61):

    23. ’kg = 30. Command change. By this command:
    a) ’k — ’e0’Ts => K;
    b) ’C + 1 => C;
    c) ’K + 2^C => K.
    Thus, the «next» command enters the command register,
    modified by the quantity of the contents of address ’k — ’e0’Ts.

    Нигде в текcте не объясняются значения верхних индексов, штрихов, e0, Ts и так далее.
    Мне кажется слегка сомнительным, что именно этот текст и именно это описание операции Ф (которая не называется тут Ф, имеет код операции, отличной от указаного в Мат Описании Киева) позволило западу взять идею указателей и начать использовать ее у себя.

    Це все підтверджує про наявність практичної реалізація до ПЛ/1 та просто її наявність, а з величезним практичним значенням, чи не так?

    Было бы просто замечательно посмотреть, например, на листинг программы, которая:
    — использует операцию Ф не для организации циклов а именно как указатель в сложных (иерархических?) структурах данных
    — написана на Адресном Языке
    — причем на том его подмножестве, которое можно было ввести в транслятор (ПП-АК, или как он назывался), реализованный на Киеве — и реально исполнить.

    Я пока что возьмусь утверждать, что ни в одном из собранных вами источников ничего подобного и близко нет. При таких условиях утверждение о «первом использовании указателей в программировании» выглядит слегка шатким.

    Можно почитать отчеты о WhirlWind, со списками решаемых задач — они не менее впечатляющие и датируются от 1951 года. Но мне кажется напрямую к теме обсуждения этого никакого отношения не имеет.

    Повторюсь — я вижу безусловную силу и новизну теоретических конструкций Адресного Языка. Но от математических абстракций до того, что реально можно было вводить в живой компьютер (на основании ваших же источников) — целая пропасть, и если смотреть на синтаксис и семантику того подмножества Адресного Языка, которое можно было вводить в транслятор Адресного Языка на Киеве, то ничего нового, прорывного или поражающего там не видно, увы. Обычный не-макро ассемблер, со скидкой на особенности целевой платформы. А пресловутая «операция Ф» — подпорка для хранения счетчика цикла в памяти.

    Підтримав: Oleg Mayko
  • Недвижимость или ETF?

    Квартира без доп. расходов после покупки в течении 5-6 лет, да еще и сдаваемая? Ну-ну

    Підтримали: Gramm, Andriy Vorobyov
  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    I walked right into it

    Обнимемся! :)

    Підтримав: Max Ischenko
  • Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

    Поскольку технические аспекты в интервью поданы очень поверхностно, я прочитал Элементы программирования / Б.В.Гнеденко, В.С.Королюк, Е.Л.Ющенко — М.: ГИФМЛ, 1961. — 348 с. so that you would not have to.

    Дальше пересказ прочитанного в современной терминологии.

    Адресный подход к программированию

    Мысленно перенесемся по время, когда компьютеры были большие, а памяти у них было 2 килобайта. Если бы у нас была волшебная палочка — как бы мог выглядеть компьютер нашей мечты? Стр. 240-243 говорит нам: пусть память компьютера будет иметь вид ассоциативного массива (dictionary) с произвольными ключами.

    Мы можем объединять ключи в группы (классы эквивалентности), и для каждой группы, если это уместно, вводить понятия «итератора» и «следующего/предыдущего ключа». Вкупе с метками и условными переходами мы теперь можем писать алгоритмы, базовыми строительными блоками которых будут конструкции вида:

    for key in some_keys:  
        process memory[key]
    

    Или

    for key=first_key to last_key:
        process memory[key]
    

    В книжке для доступа к значению по ключу memory[key] используется запись 'key, а для memory[key]=val пишут val => key (стр. 243)

    Значениями в нашем ассоциативном массиве можут быть другие ассоциативные массивы, то есть, мы может делать memory[key1][key2][key3].....

    Практическая реализация

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

    А есть у нас, например, машина Киев (далее ссылки на Вычислительная машина «Киев»: Математическое описание / В.М.Глушков, Е.Л.Ющенко // К.: Государственное издательство технической литературы, 1962. — 183 с.

    (Далее ссылки на страницы в этом файле)

    В которой большинство команд — трехадресные (два адреса-источника, и адрес-приемник). Операнды любых команд (например арифметических или логических) задаются только адресами — то есть, чтобы прибавить 1 к значению в памяти, нужно использовать «ADD value_addr, address_of_one, value_addr». В памяти машины есть зона с часто используемыми константами типа 0, 1, 10, pi, e, sqrt(2), ...

    Кроме того, любой из трех адресов может трактоваться как буквально, так и со смещением, задаваемым специальным регистром А — для этого у каждого адреса есть бит «со смещением». Таким образом, «ADD addr1, addr2, addr3» — это аналог mov eax, [addr1]; add eax, [addr2];  move [addr3], eax, а если все три адреса помечены как «со смещением», то это будет mov eax, [addr1+A]; add eax, [addr2+A];  move [addr3+A], eax

    Видно, как с помощью регистра А и смещений можно реализовывать тело цикла, которое последовательно обрабатывает какие-то последовательности лежащих в памяти машинных слов.

    У машины есть сменные ПЗУ, в которых могут быть программы для, например, умножения матрицы на вектор. Которым нам надо передать адрес матрицы, адрес вектора и их размерности, но стека и передачи аргументов через стек у нас нет, регистров общего назначения тоже нет — то есть передавать аргументы через регистры тоже нельзя. В результате аргументы передаются через магические адреса. Например, по адресу 1000 размещается адрес вектора, по адресу 1001 — адрес начала матрицы, и т.п.

    Код в ПЗУ, таким образом, должен делать что-то вроде mov ebx, [1000]; move eax, [ebx+i] для доступа к i-му элементу вектора через двойное разыменования адреса.

    При такой передаче параметров двойной indirection к памяти будет частой операцией, поэтому в системе команд есть команда Ф (стр. 60): Ф addr1, addr2 сделает  A=value at address addr1; (value at address (addr2+A))= value at address (value at address addr1), то есть, фактически, выполняет то самое двойное разыменование адреса addr1.

    Как же тут реализовать Адресный Язык?

    Адресный Язык в полном объеме тут реализовать не получится (помним, что памяти — 2 кб), но можно использовать его упрощенный вариант, в котором «адреса» — это физические адреса компьютера (а не произвольные понятия), мы не разыменовываем адрес больше двух раз и т.п. (стр. 53). Такой упрощенный адресный язык можно даже транслировать в машинные коды простеньким ассемблером — сам ассемблер, пример строки на упрощенном адресном языке и ее трансляция в машинные коды даны на страницах 78-81

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

    Цитируя стр. 47 (выделение мое):"Таким образом, работу, которую обычно выполняет квалифицированный программист, удается разделить на две существенно различные части. Труд по уточнению и составлению алгоритма,требующий высокой математической культуры, выполняется инженером-программистом. Результат этого труда — адресная программа. Работа по переводу последней в машинный код осуществляется программирующими программами. Кодирование адресных программ (а иногда и перевод в необходимый стиль), каки работа на машинах, выполняется операторами со средней квалификацией. Перспективы внедрения читающих автоматов обещают свести этот труд до минимума"

    Синьойр сидит в башне из слоновой кости, джуниор пишет код :)

    Где же pointer-ы?

    Как я понимаю, именно операция двойного разыменования адреса Ф претендует на «вот он, первый в мире поинтер».

    Мне кажется, что к этому моменту уже существовали компьютеры с косвенной адресацией через регистры (whirlwind?), в которых можно было делать аналог «mov eax, [ebx]», соответственно, надобности во втором уровне косвенности не было (а нужна она только тогда, когда все аргументы задаются только и исключительно через адреса).

    Математические конструкции Адресного Языка безусловно интересны, но практической реализации его в полном объеме, как я понимаю, так и не было, а то, что было (урезанный вариант с только машинными адресами) было, по сути, на уровне ассемблера с командами косвенной адресации по адресу (что не было чем-то новым).

    Соответственно, оспаривать пальму первенства у PL/I с его POINTER (который был вполне себе живым в 1964 году) будет тяжело.

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

← Сtrl 123456...29 Ctrl →