Несколько вопросов по языку

Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Несколько вопросов по языку

Сообщение Michael_il » 26 окт 2014, 07:52

Привет всем!
Я программист С/C++. Осваиваю Андроид. Естественно, провожу аналогию с тем, что знаю.
Есть нескоколько вопросов по языку.

1. Есть ли в Андроиде возможность объявить глобальную структуру для хранения каких-либо данных (по аналогии с С++)?

2. Директива #define ?

3. Определение типа данных typedef ?

4. Возможность сохранять данные в файле и извлекать их (типа ini-file)?

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

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Несколько вопросов по языку

Сообщение Foenix » 26 окт 2014, 09:14

проще вам взять учебник по java и его полистать. Программист в таких вещах разберется быстро.
Например, в учебнике хорстмана в каждой главе проводятся аналогии с С++
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Несколько вопросов по языку

Сообщение doter.ua » 26 окт 2014, 13:19

Michael_il писал(а):Привет всем!
1. Есть ли в Андроиде возможность объявить глобальную структуру для хранения каких-либо данных (по аналогии с С++)?

2. Директива #define ?

3. Определение типа данных typedef ?

4. Возможность сохранять данные в файле и извлекать их (типа ini-file)?
1. На счет глобального погугли квалификаторы доступа в джава (в частности public), а вообще в андроиде используется система с Id разных элементов. Есть класс R с ИД. Почитать - http://developer.alexanderklimov.ru/and ... s.php#code (можно читнуть всю статью, но ссылка ведет конкретно про R класс)

2. Никогда не использовал препроцесор на плюсах, посоветовать ничего не смогу. (Изучал только основы с++)

3. С тайпдефом тоже почти не встречался. Создание своих классов полностью удовлетворяет все потребности в "экзотических типах". Часто создают класс чисто как контейнер.

4. Работа с файлами в java или в андроид. Если же конкретно для настроек: погугли: sharedPreferences (но для начинающего будет запутанно), Еще тот же xml в андроиде хранит много чего интересного: строки, цвета(colors) и т.д. БД думаю итак понятно.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Re: Несколько вопросов по языку

Сообщение Michael_il » 26 окт 2014, 18:27

Благодарю за советы. Погуглил, поговорил с народом, вроде прояснлось немного.
Учебник полистаю, конечно, но иногда вовремя поданный совет экономит много времени и сил.

А насчет ios - пока есть несколько проектов для Андроида. ios никуда не денется, всему свое время.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Несколько вопросов по языку

Сообщение Foenix » 26 окт 2014, 21:42

про учебник потому сказала, что если вы УЖЕ программист, то должны понимать, что переводить с одного языка дословно на другой все равно что переводить с английского на немецкий просто подставляя слова. Очень со многими вещами там подход разный.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Несколько вопросов по языку

Сообщение klblk » 27 окт 2014, 05:31

А еще есть Android NDK, хотя в большинстве случаев это как из пушки по воробьям. =)

Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Re: Несколько вопросов по языку

Сообщение Michael_il » 27 окт 2014, 07:55

Нет, про учебник - это нормально. Но большинство языков построено по общим приемам. Я вот, выяснил, что вместо #defines из Си, в java используют константы. И объявление структур тоже есть. Все похоже, только приемы применения разные.
Можно взять учебник и разбираться долгое время, а можно получить дельный совет и сэкономить это время. Оба подхода применимы.

Android NDK - это первое, куда я полез :)

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Несколько вопросов по языку

Сообщение Mikhail_dev » 27 окт 2014, 09:27

Синтаксис языка это его очень малая часть. Синтаксис знать можно, при этом не уметь программировать. Вы пытаетесь именно синтаксис и узнать. Но там есть такие вещи, как ссылки (в СИ вроде это указатели), которые хранятся в хипе, а примитивные типы в стеке. Там есть GC, а не прямая очистка памяти. Там есть интерфейсы и нет множественного наследования. Это только что вспомнил.
В принципе я не считаю это проблемой, если человек знает Си. Но думаю что всё таки прочитать, хотя бы поверхностно как лучше работать с Java, всё же стоит. Это больше относится к архитектуре в самом языке, нежели к его синтаксису. Одно дело уметь писать, совсем другое писать правильно.

Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Re: Несколько вопросов по языку

Сообщение Michael_il » 27 окт 2014, 09:56

Согласен стопроцентно!

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Несколько вопросов по языку

Сообщение Foenix » 27 окт 2014, 15:51

Michael_il писал(а):Нет, про учебник - это нормально. Но большинство языков построено по общим приемам. Я вот, выяснил, что вместо #defines из Си, в java используют константы. И объявление структур тоже есть. Все похоже, только приемы применения разные.
Можно взять учебник и разбираться долгое время, а можно получить дельный совет и сэкономить это время. Оба подхода применимы.

Android NDK - это первое, куда я полез :)
считаете "дельный совет" на форуме заменит учебник? а не боитесь, что он наоборот, отнимет у вас время, заведя не туда?
штудировать "долгое время" нужно тому, кто вообще ничего не знает, а кто знает (на самом деле) другой язык, то достаточно учебник пролистать, как я сказала. Это не так уж и долго.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Re: Несколько вопросов по языку

Сообщение Michael_il » 27 окт 2014, 18:36

Ну, зачем сразу крайности? Мы же не обсуждаем глобальные глубокие корни языка.
Я не против обучения, даже "за" обеими руками, если только усилие стоит результата. Сам штудировал Страуструпа и Рихтера, когда надо было.
Но если мне разок попался проектик на Андроиде, то читать двухтомник по Джаве, это все равно что покупать корову ради стакана молока.
Для этого и существуют форумы, чтобы решать небольшие вопросы.
Как говорил товарищ Винни Пух: "по-моему, так".

Благодарю всех за помощь и участие.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Несколько вопросов по языку

Сообщение Foenix » 27 окт 2014, 19:34

а у тебя "учебник" - это двухтомник? :)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Несколько вопросов по языку

Сообщение altwin » 27 окт 2014, 23:52

Michael_il писал(а):Нет, про учебник - это нормально. Но большинство языков построено по общим приемам. Я вот, выяснил, что вместо #defines из Си, в java используют константы. И объявление структур тоже есть. Все похоже, только приемы применения разные.
Можно взять учебник и разбираться долгое время, а можно получить дельный совет и сэкономить это время. Оба подхода применимы.

Android NDK - это первое, куда я полез :)
Если честно -это полный бред (ну неудержался я... 2 дня пытался игнорить тему...(зна., что тема "моложе :)")) Во первых ну очень меня смущает "менеджерская формулировка от программиста да еще и Си -шного... По поводу препроцессора - никакого отношения константы к нему не имеют и данную функцию (коей как уже выяснили в java нет) с избытком (т.е. расширением возможностей) заменяет к примеру DI. Вам стоит подучить мат часть и в частности особенности работы компиляторов и интерпретаторов. В отличии от Си (и даже кретстов) в которых процесс написания кода сводится к перечислению инструкций в java -это скорее архитектура. Более того сама по себе jvm вообще никаким образом препроцессора иметь не может, такой уж она уродилась (я бы понял, если вы были php шником, но от человека пишущего на Си и знающего, что такое сборка, компоновка, линковка и т.д. -слышать подобные вопросы - это маразм.)

P.S. синтаксис вам нужен меньше всего - это примитив, базу можно освоить за 2 дня, остальное придет в течении 2-4 недель работы. Первое, что вам нужно - это философия java, т.е. посмотрите на реализацию знакомых вам алгоритмов, во вторых почитайте "Банду Четырех", поскольку java -это фактически "эталонный" пример ООП и без него тут никуда, а это значит, что шаблоны проектирования играют тут первоочередную роль и жить без них нельзя. Нужно забыть, что такое составление инструкций компилятору (пусть даже с приминением высокоуровневых библиотек из плюсов) и начать думать объектами и структурами -это принципиально другой путь и искать сравнения тут не нужно... "Опустошите свой стакан", другого пути нет, тем более, что это java.

Если конкретнее по теме, то препроцессор с лихвой вам заменит так называемая методология - программирование через интерфейсы, DI, type hinting и т.д. Объявление структур данных возможно, но нафига, если опять таки - это ООП, все тут является объектом, как собственно и ваша структура, т.е. созданный вами класс, хранящий в себе данные и содержащий методы работы с ними - уже с избытком выполняет все задачи, при правильном построении (опять таки) архитектуры взаимодействия классов вы получите на много "меньшей кровью" в десятки раз больше инструментов, чем доступно в крестах...

P.S> вопрос можно? за Си, что платить перестали???? Я че то пропустил или появились специалисты(не студенты) ведущиеся на нищенские зарплаты "крупных" игроков вроде google с их "модными" фичами?
Просто интересно, да и как бы возможно вам просто одно приложение нужно.. так может нафик разбираться и просто ссылку на stackoverflow подкинуть? :)
Изображение

Michael_il
Сообщения: 28
Зарегистрирован: 15 окт 2014, 06:05

Re: Несколько вопросов по языку

Сообщение Michael_il » 28 окт 2014, 07:46

Вот! Это самый дельный и расширенный ответ на мои бредовые (как я уже сам догадался) вопросы. Хотел нахрапом накинуться на Java - не получилось. Аппликацию свою написал. Там простенький интерфейс, для работы с внешним девайсом через блютуз. Тестовая аппликация. Если будет этому продолжение, начну копать Java глубже. Я уже понял, что это совершенно другая философия и подход.
Спасибо за деликатную и конструктивную критику.

За Си платить не перестали, но хочется вылезти из ежедневной рутины и попробовать что-то новенькое.

P.S. Я вижу, тут на форуме можно поблагодарить. А как это сделать?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Несколько вопросов по языку

Сообщение Mikhail_dev » 28 окт 2014, 09:22

Справа от сообщения желтый оттопыренный палец

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Несколько вопросов по языку

Сообщение Mikhail_dev » 28 окт 2014, 09:25

А я вот наоборот, Си мало знаю и вроде как хочется его понять получше, но останавливает то, что может лучше изучить Swift, чтобы можно было и под ios писать с новомодным языком? Одно другому конечно не мешает, но времени на обе вещи просто нету.
Так что как бы вопрос: а для чего мне может быть полезен Си? в дальнейшем себя хочу позиционировать как тим лид по мобильным разработкам на обе платформы, либо PM.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Несколько вопросов по языку

Сообщение altwin » 28 окт 2014, 10:49

Mikhail_dev писал(а):А я вот наоборот, Си мало знаю и вроде как хочется его понять получше, но останавливает то, что может лучше изучить Swift, чтобы можно было и под ios писать с новомодным языком? Одно другому конечно не мешает, но времени на обе вещи просто нету.
Так что как бы вопрос: а для чего мне может быть полезен Си? в дальнейшем себя хочу позиционировать как тим лид по мобильным разработкам на обе платформы, либо PM.
Миша, во первых Си - это основа основ и он просто необходим для формирования мышления программиста и понимания того, как машина будет понимать и выполнять твои команды. К слову опять таки тот же банальный Makefile можно использовать везде. В любом случае, даже при условии, что у тебя достаточно опыта в java - Си расширит твое понимание того, что происходит с кодом после нажатия кнопки run и как следтсвие ты сможешь писать более эффективно, я уже неоднократно повторял цитату Линуса Торвальдса (к слову говорил он это при личной встрече) и на 100% согласен - ты никогда не будешь по настоящему хорошим программистом не зная Си. По поводу свифта - зачем? Писать под iOS ты можешь на Си и я тебе могу гаррантировать, что у опытного Си программиста освоение Objective -C займет не больше недели ито только потому, что lisp -овские скобочки будут не привычны... Начать размышлять стоит с того, что платят программисту не за язык программирования, а за решение бизнес задач. Все эти php, python, javascript и даже jvm - написанны на Cи. Я честно устал смеяться и просто грустно уже когда рассуждают есть или нет работа для Си программиста... ведь все лидеры рынка пишут на Си и другого пути нет. Я уже не говорю о сфере в которой важно писать безопастное ПО и где без Си вообще не возможно ничего. Конечно swift - это сейчас выгодно для "входа" на перенасыщенный рынок iOS, но опять таки зависит от конечно цели... ты хочешь быть пользователем чужого кода и дальше клепать не понятные приложения по шаблонам из туториалов? Это же совсем другой мир. Я уже говорил не раз и повторю, все эти "новые" технологии - PR ход крупных компаний для привлечения студентов и "плавание" на верхних строчках обзоров... опять таки быть модным и привлекать хипстерскую молодеж в программировании. Эти компании платят зарплату студентам, 120 к в год, которые они заявляют - это копейки за которые не будет работать senior или архитектор ПО в США. Даже у нас та часть команды, которая находится в США переваливает планку 250 к в доходах и это совсем не предел. Крупные компании никогда не будут и не смогул платить столько же сколько средние и даже малые (уточню - не стартапы, а полноценные компании, хотя и стартапы платят больше чем google / amazon / etc.) Я лично получал уже 3 предложения от MS и это честно смешно (во первых не хочется потерятся среди рельно большого числа гениальных сотрудников, во вторых зарплата - просто смешна, плюс дожди у них вечные...). Т.е. хочешь рости - изучай то, что тебе позволит это сделать. Выучить все - невозможно, но именно Си -позволяет решить вообще любую задачу.

P.S. с другой стороны у нас разные с тобой пути, я к примеру совсем не хочу в PM и более того с трудом в свое время вырвался из менеджерского тупика, мне ближе позиция архитектора и потому я делаю упор не только на шаблоны, алгоритмы и структуры данных но и в первую очередь на архитектуру самого кмпьютера и наиболее низкоуровневые инструменты, т.е. мне очень важно понимать детали любой технологии, выучить все нельзя, но Си и именно он позволяет мне не зная swift залезть в его исходники ;) и если честно так проще разбираться чем по туториалам. На должности же ПМ возмоно тебе не стоит заморачиваться и достаточно "беглого" знакомства, т.е. официальный ман и пара просты апов. Тут мне труно судить я плохо понимаю тех, кто пытается вырвать в манагеры и рост меня интересует скорее горизонтальный, пока даже компанию регестрировать нет желания просто потому, что очень не хочется свзываться с манагерскими делами, а нанять кого -то крутого денег не хватит :)

Главно нужно понять простую вещь (опять пример из php -но он нагляднее посколько очевиден), все юзеры (т.е. девелоперы, ато обидятся) используют его и ради простоты и удобства... зачем возится с компилятором и т.д.? Но главные лидеры и идеологи сообщества, ведущие разработку и даже часть наиболее качественных фреймворков пишут именно на Cи. Вообще без варриантов. Т.е. всегда и везде в этом мире как только мы понимаем, что шутки закончились и начинается работа с реальными задачами (А напомню работа программиста - это решение задач ежедневное, не курение мануала и очередного туториала новой либы, совсем не "курение".) мы начинаем искать узкие места, привлекать консультантов и переписывать на Си. Но чаще бывает круче, платят какой то очень маленькой компании с десятком разработчиков за простую библиотечку или функцию(опять таки написанную на Си) пару сотен тысяч зеленых денег и продолжают курить свои модные фичи.

Вообще я бы мог посоветовать произвести маленький ресерч. Составь резюме с несколько индуским стилем, т.е. не много завышенной самооценкой... Напиши лет 10 опыта Си и участие в парочке крупных проектов, желательно еще и опенсорсное что -то вроде ядра линукса и просто выложи на linkedin c указанием желаемого дохода от 250 к в год. Только укажи обязательно иначе получишь предложения с обсуждением (такие вещи не публикуют) и просто посчитай колличество предложений, думаю ты сильно удивишься откуда беруться не распиаренные миллионеры :)

Ну и как бы не забывай, у хорошего программиста -мало времени и очень много работы, потому они не ведут блоги, не пишут статьи на хабр и т.д. если конечно им за это не платят... но кто будет так транжирить время? Правильно студент ведущийся на "звездность" и популярность, вот только через год он уже не будет так крут... Да и платить за статьи, твитер и модные сообщества никто не будет и здесь становится понятна откуда такая низкая цена у крупных игроков. Хотя конечно в google есть ребята с серьезными заслугами и более чем доходами, воит только опять таки, ну нет у них времени книжки и статьи писать, потому светятся они редко.

P.S. v2 в общем много лишних букав но суть проста, знание важнейших языков программирования English & Cи позволит тебе на "тЫ" разговаривать с ведущими разработчиками того же google и более того ежедневно тролить их ;)
Начать вполне можно с форка вот такой репы - https://github.com/kaffe/kaffe
Изображение

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Несколько вопросов по языку

Сообщение Foenix » 28 окт 2014, 15:12

ого
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Несколько вопросов по языку

Сообщение Mikhail_dev » 28 окт 2014, 19:34

Убедительно сказал. Но всё таки, многие выбирают данные языки чтобы быстрее и легче получить профит от них в виде финансов, и таки они это получают. А деньги нужны довольно часто, ты даже и сам говоришь:
пока даже компанию регестрировать нет желания просто потому, что очень не хочется свзываться с манагерскими делами, а нанять кого -то крутого денег не хватит :)
И да, ты вроде вполне себе программист. Почему же у тебя есть время на форум?

Ответить