Да, надо ускорять =) Первый раз на колтине, но давно люблю регулярки. 2-я задача с кол-вом букв: fun charCount(input: String) : String{ return input.split("(?
Читал книгу по основам, на чтение ушло пару дней, здесь все четко и понятно вложились в один час. Большое спасибо за видео и вложенное в него время. Видео из категории must have для старта.
Огромное спасибо за такую большую выдачу такого материала. Я к Kotlin относился чутка с презрением, типо фу напридумывали языков всяких. А теперь начинаю видеть что он превосходит Java и временами удобнее. Но... без знаний Java я бы мало что понял с этого урока. Так что Котлин это второе дыхание Javы.
Дыхание жавы ага, этому дыханию уже наверное более 40 лет. Сначала барабан выпустили язык для кофеварок, чтобы не дай бог не было перегрузки операторов, а потом стали туда напихивать видя как язык сливает.
Как всегда хороший урок, спасибо) По впечатлениям Котлин вроде бы довольно удобный, но в некоторых местах все же синтаксис выглядит даже сложнее и запутаннее. Хотя наверное это просто с непривычки
Наиль, огромное спасибо за урок. Но очень хотелось бы от вас ещё услышать про функции области видимости: let, run, with, apply, и also. Думаю это очень не маловажная особенность в Котлин. Спасибо!
Спасибо за видео! Первая задача: import java.util.LinkedList fun repeated(a1: IntArray, a2: IntArray): List { val list2 = LinkedList(a2.asList()) val result = mutableListOf() for (i in a1) if (list2.remove(i)) result.add(i) return result }
Небольшая поправочка - val - это read-only переменная. Т.е. не совсем константа. Чтобы задать константу, нужно использовать const val. Если декомпилировать котлиновский код каким-нибудь java-декомпилятором, то будет примерно такой результат: System.out.println(ConstValKt.getFANCY_VAL()); - в исходниках использовался val System.out.println(2); - в исходниках использовался const val, т.е. здесь компилятор напрямую закидывал значение константы
@@programmerlearner4631 константа и read-obly переменная это совершенно разные вещи и путать такое нельзя. Особенно когда используется lazy инициализация readOnly переменных.
Бро, ты крут! меня как раз на работе перевели на проект с котлиным, а я особо в нем не фурычу.. а тут такой видос мне в рекомендации) Так что спасибо!)
1. Первая задача просто не решена: в алгоритмических задачах подразумевается решение с требуемой вычислительной сложностью, а не любое работающее. Здесь представлено решение со сложностью O(n^2), а есть решение с O(n log n) - отсортировать массивы, потом пройтись по ним и "выловить" все пары. 2. Во второй задаче, алгоритмически-то решено правильно, но из-за использование конкатенации строк в цикле (что приводит к созданию новой строки и копированию в неё старой на каждой итерации) в результате общая вычислительная сложность опять получается O(n^2). Тут конечно нужно StringBuilder использовать. Ну и дублирование кода внутри цикла и после него - это ужасно конечно. 3. Тут решено с нужной сложностью, но слишком громоздкий код (да ещё создаётся куча лишних объектов). На этой задаче как раз можно было применить упомянутую функцию groupBy. Решается в одну строчку: fun groupWords(words: Array) = words.groupBy { String(it.toCharArray().apply { sort() }) }.values
Спасибо огромное за такое офигенное погружение в Kotlin. Сам я пишу на TypeScript, немного знаю Java. Просто в восторге, насколько же все круто и красиво делается в котлине!
Спасибо огромное ! Искал как раз такой короткий ознакомительный курс. Котлин чем то напомнил мне груви, тоже растет из джавы, но намного упрощает синтаксис по сравнению с ней.
ты же в начале рассказывал про groupBy, а сам вручную его реализовал по сути fun groupWords(words: List): List { return words .mapIndexed { idx, it -> idx to it.asIterable().sorted().joinToString("") } .groupBy { it.second } .values.map { it.map { words[it.first] } } }
Яндекс обычно требует задачи решать без готовых функций т.е через логику и написание функций самому с помощью циклов и прочей, если ты решишь через готовый toHashSet они даже не смотрят) накидал запару минут может не очень красиво но понятно и просто for (item in a){ if ( b.contains(item)){ c.add(item) b.remove(item) } } первая задача
Код "Привет, Мир!" на Kotlin вернул меня в "злые" 90е, когда мы дружно и незабвенно писали на Турбо Паскале. Там "Hello World" выглядит не на много иначе: program Hello; begin writeln ('Hello, world.'); end. Мне действительно 3000 лет и я действительно был там...
Господи, наконец-то попалось видео не облизывающее язык программирования в течение часа, а и вправду рассказывающее дельные и интересные вещи про него.
у меня как то так: val a = arrayOf(1,2,3,2,0) val b = arrayOf(5,1,2,7,3,2) var bCopy = b.toMutableList() println(a.filter { if (bCopy.contains(it)) { bCopy.remove(it); true } else false })
Решение первой задачи в 2 строки: fun getRepeatedIntersection(a1: IntArray, a2: IntArray): List { val mut2 = a2.toMutableList() return a1.filter {mut2.remove(it)} }
Так же было бы неплохо показать в последней задачке как класть элемент через Map.compute вместо if/containsKey, как раз было бы красивее и можно было бы элвиса запряч, когда текущий val был бы null :) (тем более если задачи из "яндекса")
Довольно часто звучало выражение "как в Python". И из этого видео я понял, что Kotlin действительно многие идеи позаимствовал у Python. Мне как представителю питона видится, что многие задачи решаются намного проще и лаконичней в питоне. Наверное Kotlin будет отличной альтернативой Java, для себя же, как для питониста, я не нашёл причин осваивать дополнительный язык.
Решение задач понравилось, всегда интересно наблюдать как у других людей голова работает) я вообще не шарю в котлине так что чисто алгоритмически скажу как бы сделал на питоне: в первой я бы создал 3й список. И его заполнял следующим образом: цикл фор первого списка по второму списку, при встрече совпадения - записать цифру в третий список, выкинуть эту цифру со второго списка и оператор continue (гугл говорит он в котлине тоже есть). И того третий список соберётся как надо. Вторая задача: примерно так же бы сделал но с одним изменением - я бы в начале CurrentLetter - пустой строкой и когда бы встречал другую букву считал бы их количество в строке, таким образом не пришлось бы потом отдельно писать кусок кода для обработки последней буквы. Третью я бы наверно также сделал.
Было бы неплохо увидеть от вас курс по Kotlin, учитывая, что курс по Java вышел отличный, что скажете?) (Если решитесь, то добавьте, пожалуйста, практические задачи)
А как вы считаете, стоит ли переходить с Java на Kotlin, если разрабатываешь Android приложения? Лично я долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro. Курсы оказались очень структурированными и понятными, что позволило мне начать работать уже за пару месяцев до окончания обучения))
Все равно писанины много лишней осталось, допустим в диапазонах, то что в питоне срезы. зачем эти Down to, Step? В том же питоне изящнее реализовано[Откуда:До куда:Шаг] например [ 10 : 0 : -2 ] Означает от 10 до нуля шаг -2. Вот и всё без лишней писанины. Это по поводу языка. А вы то молодец понятно объясняете
Спаксибо, отличное видео! Я закончил курсы ява андроид, но на работу не берут, потому что нужен котлин. Посмотрел видео и в первом приближении понял отличия котлина от явы. Видео идеально как "getting started" при переходе с явы.
@@mon_541 да нет, как и любой другой язык, котлин можно учить в качестве первого языка. Просто нужно найти подробный курс по Котлину, где будет все рассказано с самого начала- типы данных, условные операторы и т.д. Но так как котлин и ява на 90% одинаковы, а яву я изучил, то я посмотрел несколько видео, прошел еще дополнительно простой бесплатный курс на степике и тем самым освоил котлин на приемлемом уровне. Вообще, если вы не программист(например на другом языке, 1С или типа того) я бы советовал учиться не по интернет-курсам, а пойти на годовые курсы в реале. При самостоятельном обучении в инете вы вы не сможете поддерживать высокую интенсивность обучения и мотивации. Суть обучения на годовых курсах в реале: занятия раз в неделю по 6 часов, далее задают домашнее задание, вы его выполняете. Процесс обучения происходит именно тогда, когда вы выполняете дз. Теория важна, но практика- наше все. Учиться на таких курсах не сложно, просто нужно выделять время хотя бы по час-два в день, чтобы делать дз. В группе у нас в основном были люди старше 30 лет, так что в любом возрасте можно освоить программирование. Не пожалейте 1000$ за год.
@@АлексейПерцух спасибо огромное, за подробную инструкцию, это реально было важно для меня))а то сколько не искал инфы всё не то, вроде для начинающих искал в то же время столько непонятного
Спасибо, вполне хороший урок. Для человека, который уже в проге и просто нужно освоиться в новом языке, на 2х вполне неплохо смотреть, хотя хотелось бы даже побыстрее
@@MerlinMoorlo Можно, но желательно сперва изучить базу джава. Если вы совсем не разбираетесь в программировании, то сначала изучите пайтон. Он отлично подходит для первого яп. На пайтоне тоже можно сделать довольно крутые андроид приложения.
@@mikokz2329 а что, неплохая идея, сначала изучаем пайтон, потом изучаем джаву и только потом переходим к котлину, так пару лет уйдет чтобы до котлина добраться :)
Есть маленькие уточнения функция аналог void в джава возвращает Unit! в тоже врем в котлине есть тип nothing, функции которые возвращают nothing как раз не возвращают никакого значения и даже управления, простыми словами они выбрасывают exception. А Any это просто супертип аналог object. а не обозначение любого класса.
Всё-таки лучше наверное указывать тип всегда явно , и ставить возможность неявной автотипизации для чего-нибудь типа foreach=>(var i in integer_list){PrintLn(int32.parse(i))}
Коммент по поводу функций, когда метод находился вне класса, т. е. в процедурных языках программирования, таких как C/C++/Pascal и ещё куче языков, то он называется либо функций, либо процедурой. В зависимости от типа возвращаемого значения. void - процедура, потому что ничего не возвращает. Функция - int, double, string и т. д., потому что выполняет return в конце своей работы. А в ООП, что функцию, что процедуру называют методом. А это значит что Kotlin поддерживает процедурный стиль программирования.
Подсчет к-ва каждого символа через мапу fun count (str: String){ val result = mutableMapOf() for (i in str.indices) { val char = str[i] result[char] = if (result[char] == null) 1 else result[char]!! + 1 } result.forEach { (ch, count) -> print("$ch$count") } }
Наш чат в Telegram: t.me/alishev_g
@Jace Jabs Привет! я его не знаю, поэтому пока такого видео не будет.
@@alishevN Привет, можно ли заказать решения задач по котлин у вас?
Как обращаться Алишер или Алишев?
Смотрел на 2х, освоил Котлин за полчаса.
Где видосики, влоггер?
спс ржу ))
Не смотрел и сразу освоил, магия
Чай
Да, надо ускорять =) Первый раз на колтине, но давно люблю регулярки. 2-я задача с кол-вом букв:
fun charCount(input: String) : String{
return input.split("(?
Читал книгу по основам, на чтение ушло пару дней, здесь все четко и понятно вложились в один час. Большое спасибо за видео и вложенное в него время. Видео из категории must have для старта.
что за книга?
@@manOfPlanetEarth The Joy of Kotlin
@@alexeypolishchuk7010 thanks!
Прекрасно, хороший темп, тембр и словарный состав.
Наполнение то что доктор прописал.
Спасибо! Переслал сыну. ))
Спасибо за полезное видео.
Подача - то что нужно.
Со знаниями Java Core было очень легко понимать о чем речь.
Огромное спасибо за такую большую выдачу такого материала. Я к Kotlin относился чутка с презрением, типо фу напридумывали языков всяких. А теперь начинаю видеть что он превосходит Java и временами удобнее. Но... без знаний Java я бы мало что понял с этого урока. Так что Котлин это второе дыхание Javы.
Дыхание жавы ага, этому дыханию уже наверное более 40 лет. Сначала барабан выпустили язык для кофеварок, чтобы не дай бог не было перегрузки операторов, а потом стали туда напихивать видя как язык сливает.
@@inbuckswetrust7357 откуда цифра 40 лет? и при чем тут котлин?
Как всегда хороший урок, спасибо) По впечатлениям Котлин вроде бы довольно удобный, но в некоторых местах все же синтаксис выглядит даже сложнее и запутаннее. Хотя наверное это просто с непривычки
Как же приятно учить Kotlin после Java! Не потому что Java ужасный, просто уже всё понимаешь моментально )
Согласен, пишу на Джаве +- год, и вот решил выучить Котлин :)
Я тебе больше скажу - после Java и Python - Kotlin учить еще приятнее ) Контлин - их внебрачный сын )
@@ololo2274 Jaba + Piton = Kotleta
а зачем он вам в работе был нужен?
После Java и Gosu только названия коллекций надо запомнить 😊
Лайк не глядя:) Спасибо за вашу работу, Наиль и за умение хорошо подать материал)
P.S Посмотрю позже)
посмотрел?
Огромное спасибо за ваш труд. Тема Kotlin очень интересна, буду и дальше рад видеть ее на канале. Удачи в начинаниях :)
Наиль, огромное спасибо за урок. Но очень хотелось бы от вас ещё услышать про функции области видимости: let, run, with, apply, и also. Думаю это очень не маловажная особенность в Котлин. Спасибо!
Наиль, ещё не посмотрел, но заранее лайк 👍, давно пора по котлину плейлист сделать!!!
Спасибо за видео!
Первая задача:
import java.util.LinkedList
fun repeated(a1: IntArray, a2: IntArray): List {
val list2 = LinkedList(a2.asList())
val result = mutableListOf()
for (i in a1) if (list2.remove(i)) result.add(i)
return result
}
Спасибо вам, добрый человек! Идельный вмдео урок. Сжато, по делу и при этом все пояснено.
Небольшая поправочка - val - это read-only переменная. Т.е. не совсем константа. Чтобы задать константу, нужно использовать const val. Если декомпилировать котлиновский код каким-нибудь java-декомпилятором, то будет примерно такой результат:
System.out.println(ConstValKt.getFANCY_VAL()); - в исходниках использовался val
System.out.println(2); - в исходниках использовался const val, т.е. здесь компилятор напрямую закидывал значение константы
а константа это разве не read-only переменная?
@@programmerlearner4631 константы определяются во время компиляции. val - во время выполнения. Немножчеко разное
@@aquinary. это принципиально на что-то влияет?
@@felinooper6300 это надо знать, чтобы не путаться в терминах.
@@programmerlearner4631 константа и read-obly переменная это совершенно разные вещи и путать такое нельзя. Особенно когда используется lazy инициализация readOnly переменных.
Бро, ты крут! меня как раз на работе перевели на проект с котлиным, а я особо в нем не фурычу.. а тут такой видос мне в рекомендации) Так что спасибо!)
1. Первая задача просто не решена: в алгоритмических задачах подразумевается решение с требуемой вычислительной сложностью, а не любое работающее. Здесь представлено решение со сложностью O(n^2), а есть решение с O(n log n) - отсортировать массивы, потом пройтись по ним и "выловить" все пары.
2. Во второй задаче, алгоритмически-то решено правильно, но из-за использование конкатенации строк в цикле (что приводит к созданию новой строки и копированию в неё старой на каждой итерации) в результате общая вычислительная сложность опять получается O(n^2). Тут конечно нужно StringBuilder использовать. Ну и дублирование кода внутри цикла и после него - это ужасно конечно.
3. Тут решено с нужной сложностью, но слишком громоздкий код (да ещё создаётся куча лишних объектов). На этой задаче как раз можно было применить упомянутую функцию groupBy. Решается в одну строчку:
fun groupWords(words: Array) = words.groupBy { String(it.toCharArray().apply { sort() }) }.values
Наиль, спасибо за видео!!! Очень жду следующих видео про Котлин.
хоть я и кодил всю свою сознательную жизнь на шарпах, котлин я благодаря вам освоил очень быстро. спасибо за видос!
Наиль - просто офигенный дядька! Всегда с удовольствием смотрю его видео, всегда всё чётко, понятно и без лишней воды.
Потихоньку переходим в нашей команде с java на котлин. Видео очень полезное. Спасибо
зачем, почему?
какого рода компания у вас?
@@Das.Kleine.Krokodil сбер
Спасибо огромное за такое офигенное погружение в Kotlin. Сам я пишу на TypeScript, немного знаю Java. Просто в восторге, насколько же все круто и красиво делается в котлине!
выражаю свою огромную благодарность за столь информативное и лаконичное видео
Kotlin очень полюбил после Java.
Спасибо огромное ! Искал как раз такой короткий ознакомительный курс. Котлин чем то напомнил мне груви, тоже растет из джавы, но намного упрощает синтаксис по сравнению с ней.
Очень хорошее ознакомительное видео, Наиль. Как всегда - просто, чётко и понятно. Спасибо!
Шикарная подача и примеры. После чтения документации закрепить его видосом было очень полезно. Спасибо.
Огромное спасибо за проделанный труд. Зная Java, освоил Kotlin (на базовым уровне) со скорость 1.25 :)
Спасибо за видео.
Третья задача:
return list.groupBy { it.toSet() }. values.toList()
функциональный подход.. а ТС похоже императивщик )
Великолепно! Просто восхитительно! Коротко, без воды и по делу.
спасибо. было лень читать книгу, теперь стало легче)
Огромное спасибо Наиль! Топ канал и топовые видео!
Вот это круто, как раз на котлине сейчас пишем
В этом видео всё идеально) И подача, и язык
Спасибо за все видео на канале, хорошая подача материала, продолжай в том же духе!
Самый лучший ролик на ютюбе! Спасибо за подробное разъяснение кода ! нигде такого больше нет, а ведь это именно то, что нужно! Хочу ещё!!!!
вот это шикарно!!!! Лайк от СЕООНЛИ
ААА, наконец-то Котлин))
Спасибо большое за Ваши видео! Очень понятно и структурировано излагаете материал.
ты же в начале рассказывал про groupBy, а сам вручную его реализовал по сути
fun groupWords(words: List): List {
return words
.mapIndexed { idx, it -> idx to it.asIterable().sorted().joinToString("") }
.groupBy { it.second }
.values.map { it.map { words[it.first] } }
}
Наиль ты болшой молодец!! Любые твои уроки, очень позноавтельные !!
Очень суперский урок - спасибо!
Спасибо за быстрое введение в Kotlin.
Яндекс обычно требует задачи решать без готовых функций т.е через логику и написание функций самому с помощью циклов и прочей, если ты решишь через готовый toHashSet они даже не смотрят)
накидал запару минут может не очень красиво но понятно и просто
for (item in a){
if (
b.contains(item)){
c.add(item)
b.remove(item)
}
}
первая задача
Код "Привет, Мир!" на Kotlin вернул меня в "злые" 90е, когда мы дружно и незабвенно писали на Турбо Паскале. Там "Hello World" выглядит не на много иначе:
program Hello;
begin
writeln ('Hello, world.');
end.
Мне действительно 3000 лет и я действительно был там...
Как раз то что я искала! Спасибо было полезно.
Отличный вводный урок, спасибо большое!
Господи, наконец-то попалось видео не облизывающее язык программирования в течение часа, а и вправду рассказывающее дельные и интересные вещи про него.
Довольно не плохая презентация информации, спасибо бро! Давай запилим приложение еще на минималках какое нибудь и будет вообще сказка!
Спасибо за твои видео, как
всегда просто и доступно)
Материал и озвучка - хорошая. Спасибо!
как всегда на высшем уровне ! Спасибо
Лайк заранее. Вернусь через пару недель после ЕЕ и Спринга=)
EE и Spring за пару недель? - Мужчина! ))
@@wildjoe6259, есть разница изучить азы и стать синьором. Так что всё зависит от поставленной цели:)
@@skanta как успехи?
Привет! Классный посыл - знакомство с Котлин. Лайк сразу.
Спасибо за видео, сохранил и лайкнул 👍
Первая задача получилась что-то знатно короче:
execOne(one: IntArray, two: IntArray): List {
return one.filter { it -> it in two }.sorted()
execOne(intArrayOf(1, 1, 1), intArrayOf(1, 1))
Работает неправильно
у меня как то так:
val a = arrayOf(1,2,3,2,0)
val b = arrayOf(5,1,2,7,3,2)
var bCopy = b.toMutableList()
println(a.filter { if (bCopy.contains(it)) { bCopy.remove(it); true } else false })
Perfect explanation of Kotlin. Thank you for nice video!
Хорошее видео, но не охватил let{} run{} и тд, а они используются очень часто, также suspend, launch и job
Решение первой задачи в 2 строки:
fun getRepeatedIntersection(a1: IntArray, a2: IntArray): List {
val mut2 = a2.toMutableList()
return a1.filter {mut2.remove(it)}
}
val mut2 = LinkedList(a2.asList())
Преподаватель от бога просто )) спасибо, все очень понятно
Ждём марафон по Котлин 🔥
Спасибо за видос!
Третья задача на лямбдах
fun listGrouper(input:List) : List{
return input
.groupBy(keySelector = { it.toCharArray().sorted() }, valueTransform = { it } )
.map { it.value }
}
Так же было бы неплохо показать в последней задачке как класть элемент через Map.compute вместо if/containsKey, как раз было бы красивее и можно было бы элвиса запряч, когда текущий val был бы null :) (тем более если задачи из "яндекса")
Круто. Есть 2 топовых java учителя Alishev и dmDev. И кто круче- я не знаю. Лайк
8:16 Классно. Подобно в питоне можно делать.
Когда изучал джаву, то думал почему же не сделали так как в питоне
Довольно часто звучало выражение "как в Python". И из этого видео я понял, что Kotlin действительно многие идеи позаимствовал у Python. Мне как представителю питона видится, что многие задачи решаются намного проще и лаконичней в питоне. Наверное Kotlin будет отличной альтернативой Java, для себя же, как для питониста, я не нашёл причин осваивать дополнительный язык.
Я бы ещё добавил - как в DELPHI - (может кто изучал этот язык - многое по синтаксису взято из него)
@@МихаилСтариков-т9ч делфи это паскаль. что из паскаля взял котлин?
> я не нашёл причин осваивать дополнительный язык.
а зачем таким вопросом задаваться под видел про котлин?
Решение задач понравилось, всегда интересно наблюдать как у других людей голова работает) я вообще не шарю в котлине так что чисто алгоритмически скажу как бы сделал на питоне:
в первой я бы создал 3й список. И его заполнял следующим образом: цикл фор первого списка по второму списку, при встрече совпадения - записать цифру в третий список, выкинуть эту цифру со второго списка и оператор continue (гугл говорит он в котлине тоже есть). И того третий список соберётся как надо.
Вторая задача: примерно так же бы сделал но с одним изменением - я бы в начале CurrentLetter - пустой строкой и когда бы встречал другую букву считал бы их количество в строке, таким образом не пришлось бы потом отдельно писать кусок кода для обработки последней буквы.
Третью я бы наверно также сделал.
Хорошему видео не нужны ботокомментарии. И к счастью, тут их нет. Когда видео рассказывает человек с опытом, это видно по манере повествования.
Спасибо за видео, выучил язык, еще бы в контексте спринга\хибера - Котлин)
Блин, аргументы по умолчанию реально крутая фича. Печально, что в джаве их нет
СУПЕР. спасибо за труд
Решил третью так, в одну строку:
fun groupWords(a: Array): List{
return a.groupBy { it -> it.toSet() }.values.toList();
}
Спасибо за ваш труд!
Хорошее видео, но задачи решаются с представленными возможностями куда проще. 3 задача без учета ввода и вывода 2 сроки.
Надеюсь будет больше уроков про Котлин
Пересказал документацию, красава.
Познавательно, спасибо)
Было бы неплохо увидеть от вас курс по Kotlin, учитывая, что курс по Java вышел отличный, что скажете?) (Если решитесь, то добавьте, пожалуйста, практические задачи)
Курс вряд ли. Я же практически все рассказал в этом видео)
@@alishevN а как же корутины?)
@@ДенисШепелёв-ф3ч это ж основы, представьте elixir за час, вы там не увидите написание распределённых систем явно за час.
Годнота, давай ищо!
Спасибо тебе за твои уроки
Лучший!!!
А почему Котлин, в отличие от Явы, поменял местами и имяПеременной при инициализации? Для чего такое задумано?
Для того чтобы беглым взглядом при просмотре кода обращать внимание на НАЗВАНИЕ переменной, а уже потом обращать внимание на её тип
@@антонсыч-ъ9и и названия переменных при этом еще и выровнены по одному столбцу
спасибо за контент)
У меня экран стал липкий от количества синтаксического сахара!
П.С. видос и сам язык топ!
А как вы считаете, стоит ли переходить с Java на Kotlin, если разрабатываешь Android приложения? Лично я долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro. Курсы оказались очень структурированными и понятными, что позволило мне начать работать уже за пару месяцев до окончания обучения))
Все равно писанины много лишней осталось, допустим в диапазонах, то что в питоне срезы. зачем эти Down to, Step? В том же питоне изящнее реализовано[Откуда:До куда:Шаг] например [ 10 : 0 : -2 ] Означает от 10 до нуля шаг -2. Вот и всё без лишней писанины. Это по поводу языка. А вы то молодец понятно объясняете
Спаксибо, отличное видео! Я закончил курсы ява андроид, но на работу не берут, потому что нужен котлин. Посмотрел видео и в первом приближении понял отличия котлина от явы. Видео идеально как "getting started" при переходе с явы.
долго учились ,сложно?наверное сразу котлин начинать не реально без знаний основ
@@mon_541 да нет, как и любой другой язык, котлин можно учить в качестве первого языка. Просто нужно найти подробный курс по Котлину, где будет все рассказано с самого начала- типы данных, условные операторы и т.д.
Но так как котлин и ява на 90% одинаковы, а яву я изучил, то я посмотрел несколько видео, прошел еще дополнительно простой бесплатный курс на степике и тем самым освоил котлин на приемлемом уровне. Вообще, если вы не программист(например на другом языке, 1С или типа того) я бы советовал учиться не по интернет-курсам, а пойти на годовые курсы в реале. При самостоятельном обучении в инете вы вы не сможете поддерживать высокую интенсивность обучения и мотивации. Суть обучения на годовых курсах в реале: занятия раз в неделю по 6 часов, далее задают домашнее задание, вы его выполняете. Процесс обучения происходит именно тогда, когда вы выполняете дз. Теория важна, но практика- наше все. Учиться на таких курсах не сложно, просто нужно выделять время хотя бы по час-два в день, чтобы делать дз. В группе у нас в основном были люди старше 30 лет, так что в любом возрасте можно освоить программирование. Не пожалейте 1000$ за год.
@@АлексейПерцух спасибо огромное, за подробную инструкцию, это реально было важно для меня))а то сколько не искал инфы всё не то, вроде для начинающих искал в то же время столько непонятного
@@АлексейПерцух плохой совет
подойдёт только таким же, как ты
* джава, и никак иначе
1:05:00 Если порядок не важен, то вот решение: val result = s2.filter { e -> s1.any{it == e} }
Спасибо, очень интересно !
Спасибо, вполне хороший урок. Для человека, который уже в проге и просто нужно освоиться в новом языке, на 2х вполне неплохо смотреть, хотя хотелось бы даже побыстрее
Как же легко переходить с Java на Kotlin, спасибо
а с нуля можно котелок пробовать если до этого не был программистом вообще?
@@MerlinMoorlo Можно, но желательно сперва изучить базу джава. Если вы совсем не разбираетесь в программировании, то сначала изучите пайтон. Он отлично подходит для первого яп. На пайтоне тоже можно сделать довольно крутые андроид приложения.
@@mikokz2329 а что, неплохая идея, сначала изучаем пайтон, потом изучаем джаву и только потом переходим к котлину, так пару лет уйдет чтобы до котлина добраться :)
@@mikokz2329 лучше уж котлин сразу чем питон
по лаконичности котлин близок к питону
Есть маленькие уточнения функция аналог void в джава возвращает Unit! в тоже врем в котлине есть тип nothing, функции которые возвращают nothing как раз не возвращают никакого значения и даже управления, простыми словами они выбрасывают exception. А Any это просто супертип аналог object. а не обозначение любого класса.
Лайк стоит, но просмотр будет примерно через месяц)
А я последнюю задачу сделал путём подсчёта суммы значений символов и затем сравнения таких сумм других строк.
Всё-таки лучше наверное указывать тип всегда явно , и ставить возможность неявной автотипизации для чего-нибудь типа foreach=>(var i in integer_list){PrintLn(int32.parse(i))}
Спасибо большое!!!!
Коммент по поводу функций, когда метод находился вне класса, т. е. в процедурных языках программирования, таких как C/C++/Pascal и ещё куче языков, то он называется либо функций, либо процедурой. В зависимости от типа возвращаемого значения. void - процедура, потому что ничего не возвращает. Функция - int, double, string и т. д., потому что выполняет return в конце своей работы. А в ООП, что функцию, что процедуру называют методом. А это значит что Kotlin поддерживает процедурный стиль программирования.
Да, верно
Подсчет к-ва каждого символа через мапу
fun count (str: String){
val result = mutableMapOf()
for (i in str.indices) {
val char = str[i]
result[char] = if (result[char] == null) 1
else result[char]!! + 1
}
result.forEach { (ch, count) ->
print("$ch$count")
}
}
это не покрывает требования задачи. Если символ 'A' встречается например вначале и в конце, AAAABBBAAA, то ваша реализация сделает A7B3, а надо A4B3A3
@@fanifyeyev да, согласен
ещё бы if/else однострочные обрамлять { }, удобней потом рефакторить при необходимости, не нужно бегать и проставлять { }