Спочатку уточнимо, що таке оператор, а що таке функція (мова йде про високоуровневивх мовах програмування типу Pascal або, скажімо, PHP)
чого загального
І відразу зазначимо що і оператор і функція виконують якусь операцію (дія) над даними. в тому в сенсі філософському, або, скажімо, математичному, вони нічим не відрізняються. просто "оформляється" цю дію кілька різними способами, про що ми і поговоримо.
Що таке оператор
Оператор - знак будь-якої операції, операції ж зазвичай виробляються над об'єктами, наприклад, у багатьох мовах програмування складання двох литералов можна зробити використовуючи оператор суми, відомий нам як "плюс":
Що таке "функція"
Процедура / функція / метод класу - все це суті своїй підпрограми.
Підпрограма - це програма, яку основна програма викликає для здійснення будь-яких дій.
Якщо функція нестандартна і ви реалізуєте її самі (наприклад в Паскалі це робиться так), то в тілі своєї функції ви можете викликати інші функції і використовувати оператори, тобто по суті, функція - це просто згрупований код. який, як очікується, вирішить якусь конкретну задачу.
Тепер поговоримо про те, як викликаються функції. Наприклад, ось тут описана призначена для користувача функція (тобто така, якій спочатку в вашій мові програмування не було), яка робить те ж, що оператор суми, а саме складає два числа:
-- така функція складе значення змінних $ a $ і $ b $, тобто зробить в точності те ж, що і оператор суми, але зауважте, що тут використовується зовсім інша запису передачі даних для операції над ними - це як раз "комп'ютерний" стиль, коли дані для операції перераховуються в дужках після її імені.
Яка різниця (запис в коді)
Прийшов час проговорити про різницю між тим що називають оператором і тим що називають функцією.
Отже ще раз, припустимо, що в вашій мові програмування є:
- оператор додавання чисел $ + $
- функція $ sum () $ обчислює суму двох чисел (не важливо стандартна вона або ви написали її самі, використовуючи можливості мови програмування, який ви використовуєте).
і нехай у вас є завдання записати в змінну $ z $ суму двох числових літералів (ну або просто "суму двох чисел") $ 2 $ і $ 5 $.
Тоді з використанням оператора це робиться так:
А з використанням функції так:
-- як ми бачимо і той і той підхід виробляє дію над даними, але запис різна. Оператори зазвичай використовуються в "шкільному" сенсі, тобто дані знаходяться праворуч і ліворуч, наприклад, як в операторах роботи з залишком в Паскалі.
Що могло б бути - якби операторів взагалі не було
Таким чином, ми бачимо, що якби була можливість визначити (створити) функцію з ім'ям "+" (з одного символу), то ми могли б робити такий виклик, для складання:
ну або із записом в змінну:
-- але зазвичай так не пишуть (та й багатьма мовами не дають створювати функції, імена яких збігаються із записом операторів).
Тобто різні форми запису пов'язані радше з традицією і зручністю сприйняття.
Перейдемо до висновків.
Чим схожі функції і оператори:
- і ті і інші виробляють дії над даними (операції), тому оператор часто називають "знаком операції", а функцію можна називати "ім'ям операції".
- і ті і інші "повертають" результат, після виконання дії / дій над даними.
Чим відрізняється функція від оператора:
- Оператори зазвичай є частиною ядра мови програмування, у багатьох мовах програміст не може створювати нових операторів, в ось свої підпрограми (напр. Функції) писати може.
- Оператори в реальному програмуванні зазвичай виконують більш "прості" дії ніж функції.
- Дані для роботи операторів і для роботи функції в коді передаються по-різному (про це було вище).