Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите определиться  (Прочитано 3351 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #15 : 21 Марта 2016, 16:22:00 »
Зато в плюсах элементарно отстрелить себе ногу даже не заметив этого. Как результат искать ошибку не там где она происходит. Любой компилируемый в нативный код быстрее чем интерпретируемый.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7203
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #16 : 21 Марта 2016, 17:34:38 »
alsoijw, самое страшное, что даже и в C# можно ногу отстрелить, если не понимать, что происходит. Например, независимо от ЯП может прийти в голову написать многопоточное приложение, использующее для блокировки тредов глобальную переменную. А в качестве последствий будет, что 1000 раз поток сработает нормально, а в 1001 сразу после передачи значения в переменную из-за того, что нет гарантий, в том, что код будет выполняться последовательно, процесс запустит два потока одновременно и попортит все данные.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Помогите определиться
« Ответ #17 : 21 Марта 2016, 17:49:04 »
Как результат искать ошибку не там где она происходит.
Это для любителей искать там, где светлее
Извините, я все еще учусь

Оффлайн РыжийПёс

  • Активист
  • *
  • Сообщений: 786
  • 好红狼
    • Просмотр профиля
Re: Помогите определиться
« Ответ #18 : 21 Марта 2016, 18:10:32 »
1. В 2016г какой более востребованный язык?
ИМХО Qt5 (основан на специальных дружественных классах Qt, использует синтаксис с++) Эта система наиболее востребована потому, что она весьма кроссплатформенная: охватывает как все платформы ПК (вин, мак, линь, бсд), так и мобильные: android, iOS, sailfish, ubuntu (а в прошлом (Qt4) даже symbian). Именно на Qt создаются такие вещи, как браузер Chromium (и поделки на его основе), плейеры VLC и Clementine, окружение KDE, системы голосовой связи Skype и TeamSpeak, и многое другое...

2. Стоит ли начинать с востребованного или лучше со старого для понимания ,или в востребованном языке тоже можно добиться понимания?(Вообще с чего проще начать)
Легче всего начинать изучать программирование с паскаля (для линукса это Lazarus). С паскаля начинал и я сам. Он самый дружественный, и создавался не столько как язык для профессиональных программистов, сколько как язык для обычных пользователей. Примерно по таким же критериям создавался и basic (для нас это Gambas). Порой Lazarus меня выручает в тех местах, где например, неюзабельно Qt.

3.Посоветуйте книгу талмуд для идиотов) Чтобы от и до по крупицам врубиться что вообще происходит и откуда ноги растут.
Начинать изучать программирование с нуля лучше с помощью какой-нибудь детской (ориентированной на подростков) книжки. Там подробно на пальцах объясняется что такое код, алгоритм, компилятор и т.п.

4.И как установить тот или иной язык .
Менеджер пакетов Synaptic......  ;)
Каждый отдельно взятый человек, перешедший на GNU Linux, приближает всё остальное человечество к Светлому Будущему.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #19 : 21 Марта 2016, 18:29:07 »
ИМХО Qt5 (основан на специальных дружественных классах Qt, использует синтаксис с++) Эта система наиболее востребована потому, что она весьма кроссплатформенная: охватывает как все платформы ПК (вин, мак, линь, бсд), так и мобильные: android, iOS, sailfish, ubuntu (а в прошлом (Qt4) даже symbian). Именно на Qt создаются такие вещи, как браузер Chromium (и поделки на его основе), плейеры VLC и Clementine, окружение KDE, системы голосовой связи Skype и TeamSpeak, и многое другое...
Он на своём собственном движке Aura
Легче всего начинать изучать программирование с паскаля (для линукса это Lazarus). С паскаля начинал и я сам. Он самый дружественный, и создавался не столько как язык для профессиональных программистов, сколько как язык для обычных пользователей. Примерно по таким же критериям создавался и basic (для нас это Gambas). Порой Lazarus меня выручает в тех местах, где например, неюзабельно Qt.
Я бы не рекомендовал паскаль. Кроме проблемы с размером бинарников у него есть другие проблемы. Одна из них это громоздкий синтаксис языка. Кроме того в итоге придётся перечиваться - а это сильно замедлит работу.

Пользователь решил продолжить мысль 21 Марта 2016, 18:33:56:
Это для любителей искать там, где светлее
О многих ошибках компиллятор мог бы и предупредить. Те же самые = и ==. А то у большинсва в плюсах есть тайный смысл. К примеру массивы это и не массивы и не указатель... К примеру локальный массив нельзя вернуть из функции.
alsoijw, самое страшное, что даже и в C# можно ногу отстрелить, если не понимать, что происходит. Например, независимо от ЯП может прийти в голову написать многопоточное приложение, использующее для блокировки тредов глобальную переменную. А в качестве последствий будет, что 1000 раз поток сработает нормально, а в 1001 сразу после передачи значения в переменную из-за того, что нет гарантий, в том, что код будет выполняться последовательно, процесс запустит два потока одновременно и попортит все данные.
Одно дело говнокод. И другое дело в более-менее нормальном коде. Другое дело в тайном смысле некоторых вещей, уродском синтаксисе...
« Последнее редактирование: 21 Марта 2016, 18:33:56 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Помогите определиться
« Ответ #20 : 21 Марта 2016, 19:25:28 »
О многих ошибках компиллятор мог бы и предупредить. Те же самые = и ==.... К примеру локальный массив нельзя вернуть из функции.
Меня g++ предупреждает об этом. Чем ты пользуешься?
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #21 : 21 Марта 2016, 19:37:18 »
SergeyIT,
Код: (cpp) [Выделить]
#include <stdio.h>

int main()
{
    int a = 5, b = 6;
    a == b; // Что говорит?
    return 0;
}
g++ --version
g++ (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Помогите определиться
« Ответ #22 : 21 Марта 2016, 19:40:02 »
alsoijw,
$ g++ a.cpp -Wall
a.cpp: In function ‘char* test()’:
a.cpp:7:18: warning: address of local variable ‘arr’ returned [-Wreturn-local-addr]
             char arr[] = "text text text\n";
                  ^
a.cpp: In function ‘int main()’:
a.cpp:14:15: warning: statement has no effect [-Wunused-value]
             a == 3;
               ^
a.cpp:15:13: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
    if (a = 2)
             ^
a.cpp:19:22: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
             if (a = 1)
                      ^
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #23 : 21 Марта 2016, 19:49:02 »
SergeyIT, может не совсем понятно описал. О том что локальный массив нельзя вернуть - проблема не в отсутствии/наличии предупреждения. Это факт того что компиллятор сам за меня кое-что решает. Если создать enum то в кпримеру char его без проблем можно превратить, а обратно нет. Тот факт что нужно объявлять прототипы и реализацию делать по позже...
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Помогите определиться
« Ответ #24 : 21 Марта 2016, 22:03:01 »
alsoijw, пиши на асме и все встанет на свои места
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #25 : 22 Марта 2016, 00:29:39 »
SergeyIT, не думаю что это то чего я хочу. Я не хочу писать километры кода. Я предпочитаю короткие решения. По началу я думал что у плюсов какая-то своя философия, но я её так и не нашёл. Сборщик мусора, хотя нет, достаточно было бы подсчёта ссылок, они отсутствуют и как следствие всё то что не указатель имеет странные для меня свойства. Однажды я написал относительно большую программу(по сравнению с приветом миру). Всё работало. Потом я добавил пару строк. И вот как раз они и не сработали. Я долго пытался понять в чём проблема. В конце концов я понял её. Объекты из более высокоуровневых языков и объекты из плюсов - разные вещи. Суть в том что при добавлении объекта в вектор добавляется не сам объект. Добавляется копия объекта. Как я понимаю именно по этой причине происходит уничтожение статического массива - компиллятор достаточно примитивен для того чтобы осознать что объект будет где-то использоваться. Хотя как минимум без подщёта количества ссылок будет невозможно определить когда его пора освобождать. Периодически сталкиваясь с некоторыми особенностями стандартной библиатеки возникает вопрос почему это было сделано именно так. Я так и не нашёл способа удалить из вектора элемент указав его номер. Зато элемент можно удалить если взять итератор на начало и прибавить индекс элемента. Понятное дело что код становится гораздо длинее. По некоторым причинам приходится писать используя диалект плюсов от мелкософта. Там подобавляли _s к названиям методов и поменяли список аргументов и остались довольны. Как следствие код для линукса не соберётся на винде(я привязан к студии) а код винды под линуксом. Я пытался понять это но не смог. Я пытался понять что мне может дать свойство плюсов - обязательно должен быть прототип. По началу всё было хорошо - я помнил это правило и сначало была реализация функции, а потом реализация функции. И думал что это дело вкуса. Но потом проэкт вырос и получилась ситуация когда аргумет функции был оперделённого класса, а в классе была использована эта функция. Я уже не помню подробностей, но пришлось переписывать половину проекта. Это была чисто механическая работа и она была крайне утомительна. Через некоторое время у меня отделилась реализация от определения. Но я так и не решил что отделение реализации от объявления даст мне какие-то преимущества. Я так и не понял зачем нужен препроцессор. Запутать код - запросто. Я так и не нашёл красивого способа работы со временем. Есть конечно tm и time_t но мне совершенно не понятно почему нельзя было добавить методы в tm ведь так было бы красивее. Почему в плючах нет свойтв на подобии си шарпа? Каждый раз натыкаясь на очередуную особенность плюсов я спотыкаюсь.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Помогите определиться
« Ответ #26 : 22 Марта 2016, 12:08:50 »
alsoijw, как то сложно излагаешь :(. Я много писал на разных языках, стараясь меньше использовать сторонние классы и с утечками памяти практически не сталкивался... Но до этого писал немного на асме и на Си ((другая платформа с 56кб памяти) и вошло в привычку внимательно следить за памятью и за поведением объектов. (Кстати, С# я не знаю, никогда не использовал, хотя пришлось как то изучать его внутренности...)
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #27 : 22 Марта 2016, 12:52:24 »
SergeyIT, я использую сторонние классы, но тем не менее код на плюсах получается объемнее.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн orb2

  • Любитель
  • *
  • Сообщений: 70
    • Просмотр профиля
Re: Помогите определиться
« Ответ #28 : 24 Марта 2016, 15:25:29 »
orb2, я бы не сказал, что расчёты на C/C++ более узко, чем питон, скорее более широко, т.к. есть возможность писать очень быстрые числодробилки, скорость которых на питоне будет неприемлемой. Более сложно - да.
Вопрос не в том что можно или нельзя, а в том что вы будете делать на данном языке ;)

 - Считать можно почти на любом языке программирования.
 - Скорость с которой ваша программа будет считать не имеет значения, мы говорим о начинающем программисте.
 - при ширину я не понял, "ширина" почти во всех языках одинакова. Считать можно любые домашне расчеты в полном объеме, даже в класическом бейсике.

Соственно мне хватало бейсика в 90х годах на спектруме с его 48кбайтами оперативной памяти для расчета задач школы, университета и домашних расчетов. Скорость расчета была мгновенной ;) Я не отличил бы скорость на С++ и мощном компе и Бейсике для спектрума, потому что дома я не считаю расчет космического перелета с учетом всех законов физики.

Относительно домашних расчетов, то на С++ неудобно делать такой софт, тот же бейсик/Питон намного лучше, потому что отладка на 90% будет состоят из проверки только формул, а в случае С++ то 70% будут ошибки компилятора и очень тяжело в таком режиме работать.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите определиться
« Ответ #29 : 24 Марта 2016, 15:53:53 »
orb2, если брать калкулятор - там ничего не заметишь. Если брать что-то типа autocad, рендера 3D, мощьный физический движок, то невооружёным глазом заметишь.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.