Вход | Регистрация
 

Идеи для реализации приложения с ООП и многопоточностью?

Идеи для реализации приложения с ООП и многопоточностью?
Я
   Esodinshik
 
17.06.21 - 17:26
Хочу написать приложение на си-подобном языке, чтобы на практике понять ООП и многопоточность. Думаю для мобильных приложений написать - иначе какое бы ни было приложение, конечным пользователем его будет сам разработчик. А так может и копейки с рекламы получу - хорошая награда за первый проект.
В связи с этим вопросы:
1. Идеи, в которых можно гармонично и сложно реализовать ООП и многопоточность? (игры, программы)
2. Какие там гроши капают с навязчивой рекламы во время работы приложения/игры? Сложно ли прикрутить стандартные эти рекламные баннеры?
3. Сложно ли опубликовать приложение на плеймаркете? Юридически-бюрократически, так сказать? (аппстор не рассматриваю вообще)
   fisher
 
1 - 17.06.21 - 17:40
Обстоятельный подход. Перед каждым гугл-запросом - консультация на форуме.
   Garykom
 
2 - 17.06.21 - 17:42
(0)
1. Идеи стоят денег. Идеи которые не стоят требуют много денег, т.е. бесплатно тебе только на минус много лямов идей накидают
2. Гроши сильно зависят от аудитории
3. И в гугл и в эппл не проблема опубликовать. Чисто технические и денежные сложности.
   Конструктор1С
 
3 - 17.06.21 - 17:59
(0) мобильные приложения это как бы не совсем про многопоточность. Там много асинхронного, фонового можно сказать, но так чтобы во много потоков скорее редкость
   BaZZiL
 
4 - 17.06.21 - 18:18
В мобильном приложении потоки вообще не в моде. Корутины в Котлине теперь мейнстрим.
   sikuda
 
5 - 17.06.21 - 18:22
(3) (4) "Когда мы создаем suspend функцию, мы должны позаботиться о том, чтобы она выполнялась асинхронно в другом потоке или вернула результат сразу. Если же мы напишем в suspend функции код, блокирующий поток, то слово suspend нам тут никак не поможет. Такая suspend функция просто заблокирует поток, в котором выполняется корутина."
   Ненавижу 1С
 
6 - 17.06.21 - 18:22
(4) Котлин не си-подобен
   Serginio1
 
7 - 17.06.21 - 19:02
(4) Вообще то async await как раз используют пул потоков. А потоки используют еще и куча сервисов.
То есть сейчас модно использовать не потоки, а задачи
   Волшебник
 
Модератор
8 - 17.06.21 - 19:05
(7) Мне Android Studio подсвечивает, что класс AsyncTask уже устарел (@Deprecated)
   Конструктор1С
 
9 - 17.06.21 - 19:18
(6) чё эта?
   ДедМорроз
 
10 - 17.06.21 - 19:24
AsyncTask это не совсем отдельный поток.
Отдельный поток можно или через таймер или через исполнитель.
Опять же,есть понятие BackgroundThread,который при переключении на другое приложение не блокируется.
Реальная многопоточность на андорйде очень редко нужна,т.к.там нет задач,которым она требуется.
   Garikk
 
11 - 17.06.21 - 19:29
(2) идеи на самом деле ничего не стоят.

вот тебе идея - сделай яндекс.такси для крыма
   ДНН
 
12 - 17.06.21 - 19:37
(2) Для подтверждения аккаунта пин-код на почту должен приходить?
   Ненавижу 1С
 
13 - 17.06.21 - 19:39
(9) ты его синтаксис видел?
   Резак
 
14 - 17.06.21 - 19:53
(0) Сейчас мало смысла учить ООП, когда многие разработчики стараются отходить от этого устаревшего подхода в сторону функционального программирования.
Денег с рекламы не получишь на первом приложении, об этом даже не стоит задумываться. Рассчитывай только на получение неудачного опыта, это тоже ценное приобретение.
Многопоточность - не понятно зачем тебе это сейчас нужно.
   NorthWind
 
15 - 17.06.21 - 20:15
(0) странный подход. Иди на работу - там задач накидают, да еще и денег за их решение заплатят.
   Ненавижу 1С
 
16 - 17.06.21 - 20:49
(14) я бы сказал, что сейчас пытаются в симбиоз
   vde69
 
17 - 17.06.21 - 21:15
(14) функциональное программирование - идея красивая, раализация ужас...

сейчас пишут или процедурно или ООП,
   vde69
 
18 - 17.06.21 - 21:18
(0) для мобильных приложений многопоточности нет....

Андроид поддерживает один активный поток имеющий текущий фокус ввода и службы, теоретически можно написать несколько служб для одного приложения, но это скорее всего зарубает антивирус...

Короче на практике в приложениях на андроиде многопоточности нет...
   Резак
 
19 - 18.06.21 - 00:15
(16) Пытаются. Но таким консерваторам нужно по рукам давать, потому что сплошные костыли получаются, и развитие проекта тормозится.
   Резак
 
20 - 18.06.21 - 00:17
(17) Так делают только программисты старой школы в возрасте, у которых мозг уже не способен воспринимать что-то новое.
   Garykom
 
21 - 18.06.21 - 03:18
(12) если про App Developer то яблочный девайс нужен относительно современный
можно теоретически обойтись виртуалкой но ее сложно настроить так чтобы на нее приходил пин
   Конструктор1С
 
22 - 18.06.21 - 05:35
(13) видел. Это же укороченная Java
   Ненавижу 1С
 
23 - 18.06.21 - 05:42
(22) вообще ни разу
   Конструктор1С
 
24 - 18.06.21 - 05:47
(14) функциональное программирование ровесник твоеги бати. Так что не такое уж и модное-молодёжное
   Конструктор1С
 
25 - 18.06.21 - 05:47
(23) на 100%. Котлин вырос из джавы и работает на JVM
   Paint_NET
 
26 - 18.06.21 - 05:49
Хоспадя.
Да слепи ты пет-проект по классике, а ля "Домашняя бухгалтерия" с облачной синхронизацией и свистоперделками. Не надо пытаться это монетизировать, тебе ещё руку набивать и набивать, прежде чем сможешь писать годный софт.
   Ненавижу 1С
 
27 - 18.06.21 - 06:13
(25)  спор был за си-подобный синтаксис. Причем тут jvm?
И синтаксис у него изначально другой
   ДенисЧ
 
28 - 18.06.21 - 06:20
У котлина синтаксис ближе к паскакалю )))

     private var matrixWidth: Int? = null
     private val _result: MutableList<Vector> = mutableListOf()
     val result: Matrix = _result


С вики кусочек примера.
   Почему 1С
 
29 - 18.06.21 - 06:56
(28) ага один в один, если только переменные объявлять
   Ненавижу 1С
 
30 - 18.06.21 - 07:58
(29) ну тоже нет - скобочки разные {}
 
 
   Почему 1С
 
31 - 18.06.21 - 08:24
(30) мы договорились в программе только объявлять переменные пакета, чтобы котлин был похож на паскаль
   Serginio1
 
32 - 18.06.21 - 11:48
(8) Я на Xamarin. Там свои задачи
   Serginio1
 
33 - 18.06.21 - 11:51
   Конструктор1С
 
34 - 18.06.21 - 13:46
(27) да с чего бы у котлина был синтаксис не сишный? Его синтаксис подобен Java и C#
   Ненавижу 1С
 
35 - 18.06.21 - 14:03
(34) см (28)
   Резак
 
36 - 18.06.21 - 19:42
У всех языков программирования синтаксис в какой-то степени си-подобный.
У каких-то больше, у каких-то меньше.
О чем спор вообще?
   Garikk
 
37 - 18.06.21 - 19:46
(36) а у фортрана чего-подобный синтаксис? или (у(лиспа))?
   Резак
 
38 - 18.06.21 - 19:50
(37) Тоже си-подобный, но совсем-совсем немного!
   Garikk
 
39 - 18.06.21 - 19:54
(38) ну да, за 10 лет до появления си, в фортране был немного си-подобный синтаксис ;)
   Резак
 
40 - 18.06.21 - 20:47
(39) Почему бы нет? Никто ведь не утверждает что он произошел от Си. Даже если бы появился позже, это тоже бы не означало что за основу взят Си. Просто похожий синтаксис, не более того. Потому что любой другой синтаксис был бы неудобен. Именно поэтому все языки программирования так похожи друг на друга, что используют самую удобную форму написания кода. Ну может быть когда-нибудь придумают что-то кардинально другое и более удобное, но пока этого не произошло.
   Ivan_495
 
41 - 18.06.21 - 23:43
под многопоточность вроде специальные языки были
   vde69
 
42 - 19.06.21 - 09:33
(14) функциональное программирование я осваивал для автокаде 11 версии, 92 год...

И даже тогда это уже было далеко не ново...

То есть 30 лет назад вовсю пытались что то делать на функциональных языках... И где они сейчас? Да функциональные языки имеют свою область применения, но они узко специальные языки.
А вот чем всегда отличалась глупенькая молодёжь, так это тем, что постоянно выкапыпавают со свалки дерьмо и в него вляпываются
   vde69
 
43 - 19.06.21 - 09:35
(36) паскаль вообще ни разу не си подобный
   acht
 
44 - 19.06.21 - 09:46
(43) Не рви шаблон паше, у него и так с этим тяжело. Про SQL еще вспомни =)
   Garykom
 
45 - 19.06.21 - 09:50
(42) есть разные инструменты и в разных ситуациях лучше разные
где то императивное, где то декларативное в виде функционального
   Вафель
 
46 - 19.06.21 - 11:27
(43) ну память там вручную управляется. Значит в чем то си подобный
   vde69
 
47 - 19.06.21 - 11:51
(46) тогда уж так: все языки где есть if - си подобные....

вообще паскаль появился раньше чем си, то есть паскаль по определению не может быть си подобным....

паскаль 68 год
си - 72 год
   ДедМорроз
 
48 - 19.06.21 - 19:02
Так извините.
Если взять классический Си,где нет комментария через два слеша,где нет ссылок и значение в функцию можно только передать,а также только структуры и перечисления,то говорить,что какой-то язык Си подобный,будет сложно.
А вот если посмотреть на Си++,то да,там очень сильно все расширили.
Опять же,Си это работа с define,который пошел с ассемблера,да и сам Си от ассемблера недалеко вышел.
Но,преобразование типов в любую сторону,и работа с памятью,как с байтами,это Си.
   vde69
 
49 - 19.06.21 - 20:29
(48) типовое си

1. отсутствие контроля выхода за границы выделенной памяти
2. работа с указателями как с адресом памяти
3. довольно вольное преобразование типов
4. тип данных void
   acht
 
50 - 19.06.21 - 20:40
(46) > Значит в чем то си подобный
Аргументация уровня: "SQL произносится по русски как СиКьюЭль, значит он Си - подобный"
   acht
 
51 - 19.06.21 - 20:48
(46) Вот еще хороший пример в тему "ручное управление памятью, значит си подобный":
         logical :: l,m
         integer, pointer :: i
         integer, allocatable, dimension (:,:) :: j
         l = associated (i)              ! l назначается значение
         m = allocated (j)               ! m получает значение false
         allocate (j(4,-2:3))            ! отводится память
         allocate (i)                    ! i указывает на безымянное назначение
         l = associated (i)              ! l получает значение
         m = allocated (j)               ! m получает значение true
              ...
         deallocate (i,j)                ! память освобождается

Как думаешь, какой язык?
   H A D G E H O G s
 
52 - 19.06.21 - 21:27
Вот еще хороший пример упоротости C++ языков. Найдите ошибку.

case eMethodTestString:
{
wchar_t* base_wstr = L"Привет тест!";
WCHAR_T* return_wstr = nullptr;
size_t iActualSize = wcslen(base_wstr) + 1;

if (m_iMemory->AllocMemory((void**)&return_wstr, (unsigned)iActualSize * sizeof(WCHAR_T)))
    ::convToShortWchar(&return_wstr, base_wstr, iActualSize);

TV_VT(pvarRetValue) = VTYPE_PWSTR;
TV_WSTR(pvarRetValue) = return_wstr;
pvarRetValue->wstrLen = iActualSize-1;
delete[] base_wstr;
delete[] return_wstr;

return true;
}
   acht
 
53 - 19.06.21 - 21:43
(52) О, кто-то пишет компоненту 1С и очищает память, ему не принадлежащую =)
   Кирпич
 
54 - 20.06.21 - 13:58
(53) И непонятно зачем очищает. Сам же пишет "TV_WSTR(pvarRetValue) = return_wstr;" и через две строчки "delete[] return_wstr;"

А шо если не "if (m_iMemory->AllocMemory" и всё равно "delete[] return_wstr;"

Херню писать можно и на паскале, а на счет C++ согласен. Слишком много кракозяблов. Глаза сломать можно.
   NorthWind
 
55 - 20.06.21 - 16:40
(52)
wchar_t* base_wstr = L"Привет тест!";
...
delete[] base_wstr;


ну вот это явная фигня, память, выделенная под base_wstr - не динамическая.
   Garykom
 
56 - 20.06.21 - 17:00
(55) таки грохнет
   ДедМорроз
 
57 - 20.06.21 - 19:36
На самом деле,как реализовано,это еще вопрос.
Если константа будет скопирована в динамтческую память,то ее нужно чистить,если же в памяти кода,то delete просто не отработает.
   NorthWind
 
58 - 20.06.21 - 20:55
(56) вполне может быть, но не то, что должен. Здесь не вполне понятно, что произойдет, неопределенное поведение. Может упасть, может визуально не произойти ничего, может быть утечка.
   ДНН
 
59 - 20.06.21 - 21:57
wchar_t* base_wstr = L"Привет тест!";

А разве base_wstr не должно быть const? То есть вот так:
const wchar_t* base_wstr = L"Привет тест!";
   Ненавижу 1С
 
60 - 20.06.21 - 23:03
по поводу си-подобных, вот примерный список:
https://en.wikipedia.org/wiki/List_of_C-family_programming_languages
 
 
   ДедМорроз
 
61 - 21.06.21 - 00:05
(59) так для Си const не обязательно.
А в Си++ будет выдано предупреждение о том,что константа приводится к неконстанте.
Опять же,Си не запрещает изменять константы,а только предупреждает,что это плохо.
Ну и Си++ тоже.
   Резак
 
62 - 21.06.21 - 03:49
(43) Либо ты плохо знаешь Паскаль, либо плохо знаешь Си. Как можно утверждать что он не си-подобный? Рукалицо.
   Резак
 
63 - 21.06.21 - 03:56
Паскаль:
writeln("Hello, World!");

Си:
printf("Hello, World!");

Че, прям совсем не подобно? Ну ламеры. Я фигею с вас.
   Конструктор1С
 
64 - 21.06.21 - 05:10
(28) котлин во многом это джава, он джава-совместимый, легко работает с кодом джавы, может быть преобразован в код джава. Скопипащенный тобой код это объявление переменных класса, по-сути он такой же, как в Java и C#.

(35) это неудовлетворительный ответ
   Конструктор1С
 
65 - 21.06.21 - 05:24
Не понимаю вообще, как можно считать котлин не си-подобным? Продолжением и развитием дедушки Си был C++, который изначально представлял из себя Си обвешенным классами. Первое его название таким и было - Си с классами, потом уже плюсы приделали. Годами позже, сточив зубы об C++, компания Sun Microsystems родила Java, который сильно походил на плюсы, но позволял делать многие вещи проще, удобнее. Далее Microsoft посмотрела на Java и родила свою джаву, с блэкджеком и шлюхами, назвала её C#. И вот, десять лет назад JetBrains задумали родить убивцу Java, которая была бы полностью Java-совместимой, но попроще и впитывала в себя всё лучшее от Java, ну и с оглядкой на C#. Так родился Kotlin. А в 2021 году нашлись люди, которые догадались назвать его не си-подобным
   Андрей_Андреич
 
66 - 21.06.21 - 05:28
(63) Сообщить("Здравствуй, Мир!");
   Резак
 
67 - 21.06.21 - 06:03
(66) Именно!
   NorthWind
 
68 - 23.06.21 - 11:32
(67) ну а как насчет остальных элементов синтаксиса, кроме вызова процедур? Операторные скобки, объявление переменных, использование слова then в конструкциях if и прочее?


Список тем форума
 
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.