Scala: introduction

703 views
631 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
703
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Scala: introduction

  1. 2. <ul><li>Масштабируемый ( sca lable la nguage)
  2. 3. Общего назначения
  3. 4. Строго типизированный (вывод типа)
  4. 5. Объектно-ориентированный
  5. 6. Функциональный
  6. 7. Скриптовый
  7. 8. Компилируемый </li></ul>Знакомство
  8. 9. <ul><li>Java
  9. 10. C#
  10. 11. Smalltalk
  11. 12. Pizza
  12. 13. BETA
  13. 14. Haskell
  14. 15. Erlang
  15. 16. Objective Caml
  16. 17. Scheme </li></ul>Истоки
  17. 18. <ul><li>Java Virtual Machine (bytecode)
  18. 19. .NET Framework (CLR)
  19. 20. Полная интеграция с Java (seamless)
  20. 21. Код на Scala в 2-3 раза меньше, чем на Java </li></ul>Какие преимущества?
  21. 22. <ul><li>Синтаксис </li></ul>Чем платим? object MutiplicationTableApp extends App { println( ( for {row <- 1 to 10} yield ( for { col <- 1 to 10 cell = (col * row).toString } yield &quot; &quot; * (4 - cell.length) + cell ).mkString ).mkString(&quot;n&quot;) ) }
  22. 23. <ul><li>Синтаксис
  23. 24. Смена стиля программирования </li><ul><li>mutability VS immutability
  24. 25. side effects VS pure functions </li></ul></ul>Чем платим?
  25. 26. Как быстро?
  26. 27. <ul><li>Notepad
  27. 28. Vim
  28. 29. Emacs
  29. 30. NetBeans
  30. 31. Eclipse
  31. 32. IntelliJ Idea </li></ul>IDE
  32. 33. <ul><li>REPL (Read-eval-print loop)
  33. 34. Scalac (Scala Compiler)
  34. 35. Fast Scala Compiler (FSC)
  35. 36. Maven
  36. 37. Simple Build Tool (SBT, v.0.7.7, v.0.10.0) </li></ul>Инструменты
  37. 38. <ul><li>Вычисление типа
  38. 39. Оптимизация (пример: tail-call recursion)
  39. 40. Производительный bytecode
  40. 41. Все – это объекты
  41. 42. Функции как параметры </li></ul>«Как это работает?»
  42. 43. <ul><li>Все является объектом (числа)
  43. 44. Классы и типажи
  44. 45. Множественное наследование – mixin
  45. 46. Все – это объекты
  46. 47. Функции – параметры </li></ul>Объектно-ориентированный
  47. 48. <ul><li>Функция – значение
  48. 49. Анонимные функции
  49. 50. Вложенные функции
  50. 51. Оптимизация рекурсии
  51. 52. Каррирование
  52. 53. Функции высшего порядка
  53. 54. Case классы
  54. 55. Сопоставление шаблону (pattern matching) </li></ul>Функциональный
  55. 56. <ul><li>Шаблонные типы
  56. 57. Верхние и нижние границы, вариации
  57. 58. Внутренние классы
  58. 59. Объекты-компаньоны, Одиночки (singleton)
  59. 60. Составные типы
  60. 61. Вычисление типа </li></ul>Система типов
  61. 62. <ul><li>Аннотации
  62. 63. Регулярные выражения
  63. 64. «Запечатанные» классы (sealed)
  64. 65. Встроенный XML
  65. 66. Domain Specific Language
  66. 67. Sequence Comprehensions </li></ul>Что еще?
  67. 68. <ul><li>Lift Web Framework («functional» web)
  68. 69. Scalaz, Scalax (scala core extensions)
  69. 70. Specs2 (Behaviour-Driven-Design framework)
  70. 71. Akka Actor Kernel (concurrency)
  71. 72. ScalaCheck, ScalaTest, ScalaSpecs (testing)
  72. 73. YourKit (profiling)
  73. 74. Jiva (genetic algorithms library) </li></ul>Что есть еще?
  74. 75. <ul><li>Twitter uses for performance critical code; replaces Ruby in that regard
  75. 76. FourSquare uses Scala and Lift web framework
  76. 77. Xerox uses Scala and Lift
  77. 78. Etherpad uses Scala in its real time document collaboration software (acquired by Google for Google Docs; Scala code is now opensourced) </li></ul>Кто?
  78. 79. <ul><li>scala-lang.org </li><ul><li>Дистрибутивы
  79. 80. Документация
  80. 81. Примеры </li></ul><li>Programming in Scala, Martin Odersky
  81. 82. stackoverflow.com </li></ul>Что почитать?
  82. 83. Примеры, вопросы, ответы
  83. 84. Спасибо за внимание

×