
GG
13.09.2018
15:37:08

Dmitry
13.09.2018
15:37:28

GG
13.09.2018
15:38:50
Если удобно, это норма)

Google

Ro
13.09.2018
15:41:01
Скиньте пример программы с функцией и без

Tony
13.09.2018
15:41:46
Возможно мои ответы чем-то помогли
Спасибо ? я действительно читала об'яснение def в других языках. Но не в С. Попробую там порыться. Это, помните, как в школе. Что-то не понимаешь, не понимаешь, а потом кто-то об'яснит по-другому или просто найдёшь где-то описание тебе понятное - и опа!все прояснилось ? но у меня пока нет?

Dmitry
13.09.2018
15:42:21

GG
13.09.2018
15:44:35

Tony
13.09.2018
15:46:35
а что вы делаете на практике?
Пока ничего? Учусь по видео Романа. Все было понятно до этого камня преткновения? Без def могу накатать что-то (просто конечно!). А потом Роман в видео дал задание - переписать программу, но применить def. И все. Чёрная дыра просто

Alex
13.09.2018
15:47:09

Ishmael
13.09.2018
15:48:33

Tony
13.09.2018
15:49:17

GG
13.09.2018
15:50:14
Сложные примеры придут с опытом. Начните с простых

Tony
13.09.2018
15:50:52

Ishmael
13.09.2018
15:51:18

Google

Roman
13.09.2018
15:51:29

Tony
13.09.2018
15:51:42

GG
13.09.2018
15:54:15
Согласна ?
Тоня... есть код
V = 10
Add = 3
Sum = V + Add
Сделайте функцию в которую передается V и Add. Функция суммирует и возвращает результат

Tony
13.09.2018
15:55:13

Alex
13.09.2018
15:56:17
для начала попробуйте сделать функцию которая просто будет выполнять описанное выше, а потом попробуйсте вынести из функции объявление переменных и добавить их в def

Tony
13.09.2018
15:56:56

Alex
13.09.2018
15:57:37
может тогда вопрос в том ради чего делать множество функций ? т.е. вопрос в архитектуре ?

Roman
13.09.2018
15:58:01

Ishmael
13.09.2018
15:58:12

GG
13.09.2018
15:59:12

Roman
13.09.2018
15:59:24

Ishmael
13.09.2018
16:03:44

Tony
13.09.2018
16:04:54

Roman
13.09.2018
16:05:27

Tony
13.09.2018
16:06:03

Roman
13.09.2018
16:06:38

Tony
13.09.2018
16:07:33

Ishmael
13.09.2018
16:08:13

Tony
13.09.2018
16:09:13

GG
13.09.2018
16:09:21

Google

Vlad
13.09.2018
16:10:27


Alex
13.09.2018
16:12:09
Def sum (v, add)
X = V+add
End
Puts sum
Наверное так
Хотя я конечно хочу по-старинке сделать)
V =
Add=
Sum=v+add
Puts sum
Шикарно же. Зачем этот def☠️
представь что у тебя есть сложный алгоритм по расчету математических функций по нескольким параметрам с дальнейшей интерполяцией и выводом на основе этого всего 5 разных графиков в 2 и 3 проекциях. Если представить то такая программа написанная тобой лично может занять 10 тысяч строк кода к примеру. Лично тебе будет удобно её писать и может быть удобно исправлять в ней ошибки до определенной поры, но потом возникти ситуация когда ты работаешь над этой программой месяц и уже не помнишь где ты создала переменную 3 недели назад и откуда могла возникнуть какая-нибудь ошибка. Добавь к этому что твоей программой должны будут пользоваться другие разработчики которым очень неудобно будет изучать целых 10 тысяч строк кода ради исправления какой-нибудь мелочи или смены настроек и добавь к этому что такую программу ты можешь писать совместно с группой из 20 человек каждый из которых будет писать в своем стиле непонятном для других. Тогда ты осознаешь истинную причину использования функций и других более трудных способов разработки - это приемы разделить программу на более мелкие кусочки каждую из которых можно разрабатывать отдельно и наличие единых стандартов в разработке программы для всех разработчиков, коим служит функция, а у неё есть аналоги в других старых языках)


Tony
13.09.2018
16:13:46


Alex
13.09.2018
16:17:33

Tony
13.09.2018
16:18:54

Alex
13.09.2018
16:20:03
Мдаааа... Принято?
просто мыслить такими понятиями довольно трудно, особенно если у тебя нет архитектурных знаний о разработке ПО, но это уже просто напросто не для новичков тема

Tony
13.09.2018
16:21:32
Спасибо всем за советы и об'яснения!! Пойду заново смотреть видео Романа. Заново делать все задания. И пороюсь ещё в интернете. Плюс надеюсь на мнение, оставленное выше, что со временем все-таки до меня снизойдёт понимание этого чудовищного def?

Alex
13.09.2018
16:22:19

Tony
13.09.2018
16:23:06

Alex
13.09.2018
16:28:07

Tony
13.09.2018
16:30:22
ну вот реально, меня как-то спросили на собеседовании, а для чего в ruby, Java, C# нужны такие вещи как protected, bublic и private и я ничего толком не смог объяснить ради чего это, описать что это не вопрос , но вот зачем и все - мы вам позвоним) а о том что это вы в будущем на уроках узнаете)
??но ведь правда ЗдОрово, что сейчас вы это знаете, разбуди Вас хоть среди ночи) Я правда всеми вами восхищаюсь!!! Честно. Мне кажется вы как с другой планеты люди. Умные , логичные?

Alex
13.09.2018
16:31:13

Tony
13.09.2018
16:31:32

Dmitrii
13.09.2018
16:38:14
Привет, нужен гуру автотестов. Хочу взять пару уроков, если интересно напишите в ЛС

Ro
13.09.2018
16:47:34
расскажи про ожидания - что такое автотест в твоем понимании?

Viktorija
13.09.2018
17:08:58

Fedor
13.09.2018
17:13:50

Google

Fedor
13.09.2018
17:14:23
Тоесть после слова def мы пишем имя метода и список параметров, которые он принимает
И все

Alex
13.09.2018
17:14:40
Там главное в этой книге продвигается "кейс" в чем выгода использования, а ни просто как конструкция языка
примеры хоть и детские но весьма прикладные

Fedor
13.09.2018
17:20:34
А это часть синтаксиса языка, без нее просто никае

Alex
13.09.2018
17:22:43
Ну выгода использования может быть у классов и шаблонов
ну вот выше девушка совершенно не понимала ради чего нужна функция. Если взять человека ну бабушку мою или маму и дать им изучать программирование у них же и в мысле не возникет идеи что программа создается не ради выполнения одной функции, так и у неё возникло не понимание для чего этот синтаксис когда "я могу и так не городя такие сложности сделать красоту"
а там в этой почти детской книге ну просто на пальцах описано ради чего "тебе ученику" нужны функции

Tony
13.09.2018
17:28:49

Admin
ERROR: S client not available

Tony
13.09.2018
17:30:44

Fedor
13.09.2018
17:31:25
Как только перейдете от простых скриптов к решению реальных задач
Пока в ней нет надобности, действительно применять проблематично

Tony
13.09.2018
17:31:52

Fedor
13.09.2018
17:31:54
Потом так же с классами будет

Tony
13.09.2018
17:34:56

Fedor
13.09.2018
17:38:10
попробуйте придумать себе задачу где надо сделать много сложных действий и сразу станет удобно

Tony
13.09.2018
17:41:11

Fedor
13.09.2018
17:43:03
person = {}
person.merge(
personal_data: {
name: 'some name',
last_name: 'other name',
middle_name: 'more names',
age: 12,
gender: 'male',
citizenship: 'Russia'
}
)
person.merge(
bank_account: {
card_number: '123'.
bank_name: 'some bank',
bik: '123123',
inn: '1231232'
}
)
person.merge(
dogs: [
dog1: {
name: 'dog1',
gender: 'male',
breed: 'dog',
age: 12
},
dog2: {
name: 'dog2',
gender: 'female',
breed: 'dog',
age: 13
}
]
)
puts person.inspect

Google

Fedor
13.09.2018
17:43:13
вам удобно читать этот кусок кода?


Vlad
13.09.2018
17:54:20
Напишу свой пример.
Мой первый опыт программирования на руби - это написание бота для автоматизации действий в онлайн игре для мобильного телефона.
Код главного файла https://github.com/vladlaptev/hetool-hackex-bot/blob/master/lib/mylib.rb
Так вот суть бота сводилась к тому, что у меня было меню, в котором я выбирал действия.
Пример действий:
1. Зайти в игру и посмотреть список игроков, которых можно взломать.
2. Зайти в игру и взломать игрока с определенным IP адресом.
Суть в том, что без использования функций просто невозможно сделать код, который бы принимал какие-то параметры и обрабатывал их. Например я хотел бы чтобы бот зашел в игру и взломал игрока с определенным IP. Но я эти IP не знаю, я получу их при вызове функции под номером 1. А дальше что с ними делать? Не лезть же в код, и не вписывать вручную?
Поэтому у нас есть функция, например
def hack_player(ip)
end
Вот ей мы и передаем полученные параметры в любое время. А она взламывает нам игрока в игре и говорит мол "игрок 127.0.0.1 взломан") Без функций - никуда.
Пардон за простыню текста)


Oleg
13.09.2018
17:59:24
person = {}
person.merge(
personal_data: {
name: 'some name',
last_name: 'other name',
middle_name: 'more names',
age: 12,
gender: 'male',
citizenship: 'Russia'
}
)
person.merge(
bank_account: {
card_number: '123'.
bank_name: 'some bank',
bik: '123123',
inn: '1231232'
}
)
person.merge(
dogs: [
dog1: {
name: 'dog1',
gender: 'male',
breed: 'dog',
age: 12
},
dog2: {
name: 'dog2',
gender: 'female',
breed: 'dog',
age: 13
}
]
)
puts person.inspect
я б сдалал так:
person = {}
person[:personal_data] = {
name: 'some name',
last_name: 'other name',
middle_name: 'more names',
age: 12,
gender: 'male',
citizenship: 'Russia'
}
person[:bank_account] = {
card_number: '123',
bank_name: 'some bank',
bik: '123123',
inn: '1231232'
}
person[:dogs] = [
dog1: {
name: 'dog1',
gender: 'male',
breed: 'dog',
age: 12
},
dog2: {
name: 'dog2',
gender: 'female',
breed: 'dog',
age: 13
}
]
puts person.inspect


Fedor
13.09.2018
18:01:17
я бы предложил сделать так:
person = {}
puts_personal_data_to(person)
puts_bank_account_to(person)
puts_dogs_to(person)
puts person.inspect
но для этого нужен def )
зато код сразу описывает сам себя

Oleg
13.09.2018
18:02:42
здесь согласен. Так намного удобнее читать код

Tony
13.09.2018
18:04:45

Fedor
13.09.2018
18:06:16
вот одна из причин, берем один логический кусок, например добавление персональных данных и заворачиваем в метод
def puts_personal_data_to(person)
person[:personal_data] = {
name: 'some name',
last_name: 'other name',
middle_name: 'more names',
age: 12,
gender: 'male',
citizenship: 'Russia'
}
end
и вот так получаем очень красивый основной метод
сам по себе каждый метод в три раза проще чем один гигантский

evgeny
13.09.2018
18:07:22


Tony
13.09.2018
18:07:43


Vlad
13.09.2018
18:10:08
Нет, это не первая программа, просто первая на руби. Я вам не про программу, а про то, что большинство вещей без функций написать просто невозможно, а если и возможно, то это будет неудобным, нечитаемым, громоздким и так далее.

Tony
13.09.2018
18:11:05

Fedor
13.09.2018
18:12:20
а это вообще легально?)
я первыми прогами на руби парсил сайты для совместных закупок, намучался с обходом блокировок )

Vlad
13.09.2018
18:20:30
Сейчас 99% сайтов парсится без всяких проблем. А любые проблемы с блокировками решаются масштабированием.

Aleksej
13.09.2018
18:24:12
Кстати, на чём парсеры писали? На руби ничего лучше nokogiri ещё не изобрели?

Vlad
13.09.2018
18:37:21
Кстати, на чём парсеры писали? На руби ничего лучше nokogiri ещё не изобрели?
Ну, а чем nokogiri плох? Мне вполне нравится, ибо получить данные - лишь малая часть парсинга, если уж говорить о том. У меня вся работа это парсинг, но лишь 10% времени занимает получение данных, 90% времени обработка и работа с масштабированием парсинга, обработкой исключений, чтобы воркеры с парсером работали, например миллион раз в сутки. В свое время помогла вот эта шпаргалка тулзов по парсингу https://github.com/lorien/awesome-web-scraping/blob/master/ruby.md


Aleksej
13.09.2018
18:40:55
Ну, а чем nokogiri плох? Мне вполне нравится, ибо получить данные - лишь малая часть парсинга, если уж говорить о том. У меня вся работа это парсинг, но лишь 10% времени занимает получение данных, 90% времени обработка и работа с масштабированием парсинга, обработкой исключений, чтобы воркеры с парсером работали, например миллион раз в сутки. В свое время помогла вот эта шпаргалка тулзов по парсингу https://github.com/lorien/awesome-web-scraping/blob/master/ruby.md
Нене, я не к тому, что он плох, а про то, есть ли что-то новое. :) За ссылку спасибо!
К слову о парсинге: кажется, у open uri была серьёзная уязвимость несколько лет назад.

Vlad
13.09.2018
19:16:43