Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/41: Рейтинг темы: голосов - 41, средняя оценка - 4.66
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357

Минусы ООП

21.08.2021, 07:06. Показов 8976. Ответов 97

Студворк — интернет-сервис помощи студентам
Я слышал много критики в адрес ООП. Говорят, что оно приносит больше сложности чем упрощает и такой код труднее читать.
Насколько обоснованны эти заявления? Приводятся цитаты Дейксры, Торвальдса и Рэймонда в которых они говорят об ООП не самые лестные вещи. Я понимаю, что апелляция к авторитету - не аргумент, но сомнение во мне уже заложилось...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2021, 07:06
Ответы с готовыми решениями:

Какой язык веб-программирования выбрать? Плюсы\минусы
Вопрос что ни на есть из раздела священных, но все же... Какой язык веб-программирования кто предпочитает? У кого какие плюсы и...

Динамическая/статическая типизация, интерпретация/компиляция и функциональные языки - плюсы и минусы
Вынесено из темы https://www.cyberforum.ru/holywars/thread1357389.html В самой необходимости этим заниматься. Если честно, из...

Delphi !? Плюсы и минусы
Почему при поиске работы через Internet в странах Европы и Америки очень редко можно встретить необходимость в Delphi?

97
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.08.2021, 16:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от OpXiv Посмотреть сообщение
Да, но вы забываете что нужно разделить приватные переменные и публичные - включая функции.
Не забываю, пакеты мне позволяют это сделать.

Цитата Сообщение от OpXiv Посмотреть сообщение
А вы можете конечно описать их typedef, и после создания структуры указать ссылку на нужную общую функцию, которая должна принимать адрес созданной структуры, что бы имела понятия с чем она работает.
Зачем?

Цитата Сообщение от OpXiv Посмотреть сообщение
Да и много других проблем на жопе вырастает, например управление памятью.
В Go используется garbage collection, какие проблемы с управлением памятью?
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
22.08.2021, 16:18
Цитата Сообщение от korvin_ Посмотреть сообщение
Это потому что знаний у тебя не в ней не хватает. Но это не беда, легко исправить.
Я в СИ проработал 6 лет. Я прекрасно его наелся, и понимаю что процедурный стиль унылый. И костыли - лучший друг в этом деле.

Цитата Сообщение от korvin_ Посмотреть сообщение
Я же говорю, что ты понятия не имеешь о чём говоришь.
Я бы поспорил.

Цитата Сообщение от korvin_ Посмотреть сообщение
А потом оказывается, что метаболизмы бывают разные и главный класс не подходит для всех производных
А вот, с помощью ООП вы можете создать главную классу универсальный вид. Который будет подходить всем под классам.

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
Не забываю, пакеты мне позволяют это сделать.
Как вам пакеты помогают разделить логику в структуре ? Где приватные, а где публичные.

Цитата Сообщение от korvin_ Посмотреть сообщение
Зачем?
Что бы знать, к какой структуре какие процедуры подходят. А тут уже нужно документацию писать на несколько томов.

Добавлено через 3 минуты
Посмотрел синтаксис GO. Конечно они мастерски спрятали работу с ООП))) Я конечно поржал приятно... Можно смело вычёркивать такой язык из списка легальных, и вносить в список мазохистских
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.08.2021, 16:24
Цитата Сообщение от OpXiv Посмотреть сообщение
Я в СИ проработал 6 лет. Я прекрасно его наелся, и понимаю что процедурный стиль унылый.
Ну так ты наелся Си, а не процедурного стиля, есть более современные языки. Снова ты подтверждаешь, что ничего кроме Си не видел.

Цитата Сообщение от OpXiv Посмотреть сообщение
Я бы поспорил.
Давай. Пока что не очень выходит.

Цитата Сообщение от OpXiv Посмотреть сообщение
А вот, с помощью ООП вы можете создать главную классу универсальный вид. Который будет подходить всем под классам.
И ценности у него не будет никакой.

Цитата Сообщение от OpXiv Посмотреть сообщение
Как вам пакеты помогают разделить логику в структуре ? Где приватные, а где публичные.
Указанием того, какие поля, функции и методы приватные, а какие — публичные. // К. О.

Цитата Сообщение от OpXiv Посмотреть сообщение
Что бы знать, к какой структуре какие процедуры подходят.
Очевидно те, которые принимают на вход соответствующую структуру.

Цитата Сообщение от OpXiv Посмотреть сообщение
Я конечно поржал приятно...
Это от глупости.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
22.08.2021, 16:32
Цитата Сообщение от korvin_ Посмотреть сообщение
Это от глупости.
Как не погляди, а в языке GO фундаментальные принципы объектно-ориентированного подхода используются очень даже.
Есть интерфейсы, есть возможность анонимных полей. А вот добавление функции к структуре вообще чудородно смотрится.

Добавлено через 2 минуты
Если посмотреть на такой код, то можно запросто увидеть как программисты тужатся, что бы сделать нормальный ООП


Кликните здесь для просмотра всего текста
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main
 
import (
    "fmt"
)
 
type Animal interface {
    MakeNoise() string
}
 
// printNoise accepts any animal and prints it's noise
func printNoise(a Animal) {
    fmt.Println(a.MakeNoise())
}
 
type pet struct {
    nLegs int
    color string
}
 
// describe is available to all types of Pet, but not for an animal
func (p pet) describe() string {
    return fmt.Sprintf(`My colour is "%s", and I have "%d" legs`, p.color, p.nLegs)
}
 
type Dog struct {
    pet
    favouriteToy string
}
 
// MakeNoise implements the Animal interface for type Dog
func (Dog) MakeNoise() string {
    return "Bark!"
}
 
// WagTail is something only a Dog can do
func (d Dog) WagTail() {
    fmt.Println("I am a dog,", d.pet.describe(), ": Wags Tail")
}
 
type Cat struct {
    pet
    favouriteSleepingPlace string
}
 
// MakeNoise implements the Animal interface for type Cat
func (Cat) MakeNoise() string {
    return "Meow!"
}
 
// ArchBack is something only a Cat can do
func (c Cat) ArchBack() {
    fmt.Println("I am a cat,", c.pet.describe(), ": Arches Back")
}
 
type Bird struct {
    pet
    favoritePerch string
}
 
// MakeNoise implements the Animal interface for type Cat
func (Bird) MakeNoise() string {
    return "Tweet!"
}
 
// Hop is something only a Bird can do
func (c Bird) Hop() {
    fmt.Println("I am a bird,", c.pet.describe(), ": Hops to a different perch")
}
 
func main() {
    dog := Dog{
        pet:          pet{nLegs: 4, color: "Brown"},
        favouriteToy: "Ball",
    }
    printNoise(dog)
    dog.WagTail()
 
    cat := Cat{
        pet: pet{nLegs: 4, color: "Tabby"},
        favouriteSleepingPlace: "Sofa",
    }
    printNoise(cat)
    cat.ArchBack()
 
    bird := Bird{
        pet:           pet{nLegs: 2, color: "Rainbow"},
        favoritePerch: "Back of Cage",
    }
 
    printNoise(bird)
    bird.Hop()
 
}


Добавлено через 2 минуты
Цитата Сообщение от OpXiv Посмотреть сообщение
что бы сделать нормальный ООП
Как по мне, это каша. Но со стороны новичка, который не хочет углубляться (Не потому что не может посчитать в голове мелочь). Это хороший язык.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.08.2021, 16:42
Цитата Сообщение от OpXiv Посмотреть сообщение
Как по мне, это каша.
Это от недостатка знаний. Ты не понимаешь, зачем так сделано, вот и недоумеваешь.

Добавлено через 4 минуты
Цитата Сообщение от OpXiv Посмотреть сообщение
А вот добавление функции к структуре вообще чудородно смотрится.
Это потому что ты Oberon не видел.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
22.08.2021, 17:04
Цитата Сообщение от korvin_ Посмотреть сообщение
Это от недостатка знаний. Ты не понимаешь, зачем так сделано, вот и недоумеваешь.
Я вижу что это можно сделать более элегантнее, и красивее. А так, всё набросано в общем пространстве. И функции назначаются непонятно как. И тут ещё больше вопросов.

Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Это потому что ты Oberon не видел.
Обычный язык, присущий к синтаксису Pascal и Delphi и тому подобных. Ничего против такого не имею.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.08.2021, 18:00
Цитата Сообщение от OpXiv Посмотреть сообщение
А так, всё набросано в общем пространстве.
В каком общем? Всё в пространстве пакета.

Цитата Сообщение от OpXiv Посмотреть сообщение
И функции назначаются непонятно как. И тут ещё больше вопросов.
Куда назначаются?
0
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
22.08.2021, 18:30  [ТС]
OpXiv, korvin_,
Мнда... Не ожидал я такой оживленной дискуссии... OpXiv, увы, вынужден встать на сторону Корвина(так ведь можно назвать?). Я вам настоятельно рекомендую прочесть книгу Пола Грэма ANSI Common Lisp, особенно семнадцатую главу, где реализуется простенькая система для ООП (в Лиспе есть конечно и своя), думаю вам будет интересно. Кроме того загляните в легендарный фолиант SICP, возможно ваше представление о программировании сильно изменится.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
22.08.2021, 20:37
Цитата Сообщение от korvin_ Посмотреть сообщение
В каком общем? Всё в пространстве пакета.

Куда назначаются?
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type Dog struct {
    pet
    favouriteToy string
}
 
// MakeNoise implements the Animal interface for type Dog
func (Dog) MakeNoise() string {
    return "Bark!"
}
 
// WagTail is something only a Dog can do
func (d Dog) WagTail() {
    fmt.Println("I am a dog,", d.pet.describe(), ": Wags Tail")
}

Можно было оформить как
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type Dog struct {
    pet
    favouriteToy string
 
    // MakeNoise implements the Animal interface for type Dog
    func MakeNoise() string {
        return "Bark!"
    }
 
    // WagTail is something only a Dog can do
    func WagTail() {
        fmt.Println("I am a dog,", this.pet.describe(), ": Wags Tail")
    }
}
Непонятно почему автор решил что, сделав так " (d Dog) " будет удобнее. Это сколько раз надо написать это ...


Цитата Сообщение от Regrin1 Посмотреть сообщение
Пола Грэма ANSI Common Lisp
Ужасный язык, сложный в понимание. Хотели как лучше, получилось как всегда.
0
Заблокирован
22.08.2021, 21:07
Цитата Сообщение от OpXiv Посмотреть сообщение
А теперь, назови идеотов тех, кто считает что кодить в общей коробке на много проще.
Например, я. Если у меня достаточно простой сайт и на странице только запрос к базе и отображение контента - то применять ООП не вижу никакого смысла. Тем более движок самописный и сайт мой. Даже нет смысла применять фреймворки потому что мне не надо работать в команде и потом показывать свой код другим и кодить так, что бы другие его поняли. У себя на сайте я могу делать любой говнокод. Главное, что бы было понятно и удобно мне.
ООП не панацея. ООП нельзя назвать плохим или хорошим. Это просто одна из возможностей в программировании.
0
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
22.08.2021, 21:37  [ТС]
Цитата Сообщение от OpXiv Посмотреть сообщение
Ужасный язык, сложный в понимание. Хотели как лучше, получилось как всегда.
Чем он такой плохой? Мне всё прекрасно понятно! Конечно, трудности и недостатки есть, но где их нет?
Вот например простая нейросетевая библиотека:
Кликните здесь для просмотра всего текста

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
(defpackage :neural-library
  (:use :common-lisp)
  (:nicknames :mynl)
  (:export :forward 
           :out-layer-error
       :backward
           :weights-correction
       :relu
       :relu-deriv
           :sigmoid
       :sigmoid-deriv
       :sign
           :leaky-relu
       :leaky-relu-deriv
       :random-weights))
       
(in-package :neural-library)
  
 
;Данная библиотека предназначена для создания простых нейронных сетей
;Сигналы на входах представлены в виде одномерных списков длины n: (I1 I2 ... In)
;Веса записываюся в виде двумерных списков n * m: ((W11 W12 ... W1n)
                    ;          (W21 W22 ... W2n)
                    ;                 ...
                    ;          (Wm1 Wm2 ... Wmn))
;Число выходных нейронов равно числу вложенных списков, а число входных - количеству элементов в них.
(defun scalar (a-list b-list)
  (loop for a in a-list
    for b in b-list summing (* a b)))
 
 
;При прямом прохождении каждый входной сигнал умножается на соответствующий вес и их сумма проходит через  
;функцию активации. Её результат и будет выходным сигналом. Этот процесс повторяется для всех нейронов.
;Его можно представить как скалярное произведение списка входных сигналов на список весов: 
;((I1*W11 + I2*W12 + ... + In*W1n)
; (I1*W21 + I2*W22 + ... + In*W2n)
;               ...
; (I1*Wm1 + I2*Wm2 + ... + In*Wmn))
;
;В результате мы получаем список чисел, которые мы пропускаем через функцию активации и получаем список выходных сигналов
(defun forward (fun inp weights)
  (mapcar fun (loop for wght in weights
            collect (scalar inp wght))))
 
(defun out-layer-error (ideal actual)
  (mapcar #'- ideal actual))
 
(defun number*list (num lst) 
  (loop for elm in lst collect (* elm num)))
 
(defun backward (errors weights)
  (apply #'mapcar #'+ (loop for wght in weights
                for err  in errors
                collect (number*list err wght))))
 
(defun weights-correction (deriv-fun learn-rate input-layer errors-list weights-matrix)
  (loop for error in errors-list
    for weights-list in weights-matrix
    collect (loop for inp in input-layer
              for weight in weights-list
              collect (+ weight (* error
                       learn-rate
                       (funcall deriv-fun inp))))))
(defun random-weights (num-of-inputs num-of-outputs)
  (loop for i upto (1- num-of-outputs)
    collect (loop for j upto (1- num-of-inputs)
              collect (/ (random 1000)
                 1000.0))))
 
(defun relu (x)
  (if (< x 0) 0 x))
 
(defun relu-deriv (x)
  (if (< x 0)
      0
      1))
 
(defun sigmoid (x)
  (/ 1 (+ 1 (exp (- x)))))
 
(defun sigmoid-deriv (x)
  (* (sigmoid x)
     (- 1 (sigmoid x))))
 
(defun sign (x)
  (if (< x 0)
      0
      1))
 
(defun linum (x)
  x)
(defun linum-deriv (x)
  1)
 
(defun leaky-relu (x)
  (if (< x 0)
      (* x 0.01)
      x))
(defun leaky-relu-deriv (x)
  (if (< x 0)
      0.01
      1))

Что касается ООП, в Common Lisp есть объектная система CLOS, говорят достаточно мощная. При этом методы могут быть аргументами для функций высших порядков.
Можете ли вы привести аргументы против Лиспа, с примерами кода?
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
22.08.2021, 21:55
Цитата Сообщение от Camy Посмотреть сообщение
Например, я. Если у меня достаточно простой сайт и на странице только запрос к базе и отображение контента - то применять ООП не вижу никакого смысла.
Да я вижу, что вы совершенно не понимание для чего нужен ООП. Его не нужно везде совать.
Он должен применяться где нужна логика, которую сложно уместить в процедурном стиле.

Цитата Сообщение от Camy Посмотреть сообщение
Даже нет смысла применять фреймворки
Это в вас чувство альтер эго говорит. Фреймворки нужны что бы облегчить жизнь, а не что бы показывать потом код другим.

Цитата Сообщение от Regrin1 Посмотреть сообщение
Чем он такой плохой?
Его минималистичность. Я прекрасно понимаю, ради чего он писался и для чего. Многие подобные языки уже умерли.
0
Заблокирован
22.08.2021, 22:30
Цитата Сообщение от OpXiv Посмотреть сообщение
Да я вижу, что вы совершенно не понимание для чего нужен ООП. Его не нужно везде совать.
А я разве не так сказал? Да... его не нужно везде применять. Это я и сказал.
Цитата Сообщение от OpXiv Посмотреть сообщение
Фреймворки нужны что бы облегчить жизнь
Неужели? Если я достаточно хорошо могу на нативном языке написать и у меня уже есть много своих наработок - мне фреймворки жизнь не облегчат. Кстати, я часто вижу, анализируя запросы на своих сайтах, как хакеры пытаются меня взломать. Или ищут лазейки. думая, что ВордПресс... или же фрейморк Laravel. Вероятно, дыры есть и там и там.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.08.2021, 22:30
Цитата Сообщение от OpXiv Посмотреть сообщение
Можно было оформить как
Зачем? Ради лишних отступов?

Цитата Сообщение от OpXiv Посмотреть сообщение
Непонятно почему автор решил что, сделав так " (d Dog) " будет удобнее.
Потому что так действительно удобней, например, для кодогенерации. Смотри библиотеку easyjson.

Цитата Сообщение от OpXiv Посмотреть сообщение
Ужасный язык, сложный в понимание.
А, ну тогда всё понятно.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
23.08.2021, 00:01
Цитата Сообщение от korvin_ Посмотреть сообщение
Зачем? Ради лишних отступов?
Ради логики. А то автор вынуждает плодить ваши "модули" что бы не путаться.

Цитата Сообщение от korvin_ Посмотреть сообщение
для кодогенерации
Ну теперь понятно для чего это делается.

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

Вам бы на первый канал, снимать лайфаки как одевать штаны через голову.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
23.08.2021, 01:14
Цитата Сообщение от OpXiv Посмотреть сообщение
Ради логики.
Какой логики? Логики натягивания совы на глобус?
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
23.08.2021, 01:47
Цитата Сообщение от korvin_ Посмотреть сообщение
Какой логики? Логики натягивания совы на глобус?
Что части класса - структурированного, находятся внутри данного класса. А не на другом конце планеты, со связью через телефон от МТС.

Добавлено через 6 минут
В принципе. У нас есть хороший и рабочий пример ООП. Тот же Delphi или пресловутый Lazarus.

К примеру у нас есть компоненты такие как
TButton (Кнопка)
TSpeedButton (Быстрая кнопка, или прозрачная)
TLabel (Текст)


Класс TButton наследует такие классы как
TCustomButton - TButtonControl - TWinControl - TControl - TComponent - TPersistent - TObject

Класс TSpeedButton наследует такие как
TCustomSpeedButton - TGraphicControl - TControl - TComponent - TPersistent - TObject

Класс TLabel наследует такие как
TCustomLabel - TGraphicControl - TControl - TComponent - TPersistent - TObject


Как можно заметить, базовая модель "TControl - TComponent - TPersistent - TObject" Для них одинаковая.
Но логику работы этих компонентов задают как раз таки данные классы.

Добавлено через 5 минут
TSpeedButton и TLabel по сути разные компоненты, ибо TSpeedButton приближен ближе к классу TButton.


Но по иерархии мы видим что "GraphicControl - TControl - TComponent - TPersistent - TObject" для них одинаковая.

А визуальную часть таки, создают\задают TCustomSpeedButton и TCustomLabel меняя их визуальную природу сущности.

Добавлено через 2 минуты
Определённо это наталкивает на мысли, что в руках профессионала в своём деле ООП это мощная штука.

А для обычного смертного и Структура будет тупым ножом.
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
23.08.2021, 04:37
Цитата Сообщение от OpXiv Посмотреть сообщение
К примеру у нас есть компоненты такие как
Цитата Сообщение от OpXiv Посмотреть сообщение
Класс TButton наследует такие классы как
ООП может быть и без наследования.
Цитата Сообщение от OpXiv Посмотреть сообщение
ООП это мощная штука.
Хочется узнать в чем, как вы считаете, "мощь" ООП.
0
Заблокирован
23.08.2021, 06:17
Цитата Сообщение от OpXiv Посмотреть сообщение
Вам бы на первый канал, снимать лайфаки как одевать штаны через голову.
OpXiv, я с самого начала утверждал, что ООП это не есть плохо. Просто одна из существующих возможностей. Вот только не надо тех, которые могут обойтись без ООП называть дураками. А ты постоянно пытаешься это сделать. Зачем мне космический корабль для того, что бы съездить в магазин? Ладно... доказывай и дальше, что все идиоты, а только ты один такой умный. Мне сказать больше нечего. Всё, что хотел уже высказал.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
23.08.2021, 09:36
Цитата Сообщение от Tavashi Посмотреть сообщение
ООП может быть и без наследования.
Там и так кода дофига и больше. А реализовывать всех предков без наследования, увеличит код ещё на 100000к

Добавлено через 1 минуту
Цитата Сообщение от Tavashi Посмотреть сообщение
Хочется узнать в чем, как вы считаете, "мощь" ООП.
В том что, с ним можно написать всё тоже самое что на процедурном стиле. Но при этом, всё хранится в своих коробках. И имеет большую символичность. Ибо всё это Часть одной Державы.

Добавлено через 46 секунд
Процедурный стиль - кучка аборигенов, которые бегают и не понимают что хотят.

ООП - Это Российская Федерация, США. И Другие прогрессивные страны. Которые умеют управлять странами.

Добавлено через 2 минуты
Цитата Сообщение от Camy Посмотреть сообщение
Зачем мне космический корабль для того, что бы съездить в магазин?
Так ты и не разу не привёл примеров, для чего тебе НЕ нужен ООП. Хотя Я много раз привёл, для чего он нужен.

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

Цитата Сообщение от Camy Посмотреть сообщение
доказывай и дальше, что все идиоты
Всё точно так же, что и в первом случае. ООП не нужен ровно до того случая, когда вы перестали писать калькулятор.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2021, 09:36

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

Студентская жизнь.Ее плюсы и минусы.
Студентская жизньпрекрасна...Так говорят.А как думаешь ты?

Что вы делаете необычное на форуме(плюсы и минусы)
что вы делаете на форуме не обычного? Ну не так как все... Вот пример: прежде чем ответить кому-либо, почему-то смотрю его профиль,...

Плюсы и минусы использования ООП в PHP
Опишите плюсы и минусы использования ООП в PHP???

Где лучше учить ООП PHP ? И зачем нужен ООП
Здравствуйте ! До того как начел учить ООП я кайфовал от программирования, после того как начел учить ООП нет мотивации ну и т.д общем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru