LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Там, где можно однозначно вывести тип и всё заинлайнить, m.foo(10, 20) превратится в 30. Там, где код более полиморфен, сложение будет заменено явным запросом методов.

Он будет инлайнить из другого скомпилированного модуля?

А что будет, если

def bar():
  return m.foo(10, 20)

def baz():
  m.foo = lambda x,y: x-y

def main():
  if readYN(): baz()
  print(bar())

?

bar инлайнится, но как компилятор определит, что его надо перекомпилировать после выполнения baz?

В лиспе инлайн есть только если указано явно. Иначе будет вызов foo, а внутри foo на каждый + будет динамически проверяться тип.

почему в браузерах, и даже в .NET появился развитый нативный GUI, а в жаве — нет?

Потому что пользователей браузеров на пару порядков больше, чем пользователей программ на жаве. А какой такой в .NET? Вроде Electron и его вытеснил.

Но я напоминаю, что C++ возник именно как «Си с классами». Не «Си с шаблонами».

Си с классами был Objective C. С++ родился с шаблонами.

Исходная версия monk, :

Там, где можно однозначно вывести тип и всё заинлайнить, m.foo(10, 20) превратится в 30. Там, где код более полиморфен, сложение будет заменено явным запросом методов.

Он будет инлайнить из другого скомпилированного модуля?

А что будет, если

def bar():
  return m.foo(10, 20)

def baz():
  b.foo = lambda x,y: x-y

def main():
  if readYN(): baz()
  print(bar())

?

bar инлайнится, но как компилятор определит, что его надо перекомпилировать после выполнения baz?

В лиспе инлайн есть только если указано явно. Иначе будет вызов foo, а внутри foo на каждый + будет динамически проверяться тип.

почему в браузерах, и даже в .NET появился развитый нативный GUI, а в жаве — нет?

Потому что пользователей браузеров на пару порядков больше, чем пользователей программ на жаве. А какой такой в .NET? Вроде Electron и его вытеснил.

Но я напоминаю, что C++ возник именно как «Си с классами». Не «Си с шаблонами».

Си с классами был Objective C. С++ родился с шаблонами.